skychf
2011-9-5 23:04
新版什么出来啊,现在九月到了啊,
NONO
2011-9-5 11:36
顶,等待新版本
collo
2011-9-4 13:39
顶,我保靖的。老乡活的精彩啊。
权天王
2011-9-2 21:48
听说9月出新版,我天天来这里等啊!希望大大的有
111
2011-9-2 17:01
APMServ 新版本是不是最近快出了?
嘿嘿 张兄 买了你的书 觉得很不错
烟鬼
2011-8-30 17:49
你好宴兄,請問一下,使用LVS能做samba服務的負載均衡麼?
小中
2011-8-30 14:12
你好。nginx搭建有问题。我的QQ:331911080。谢谢
宝
2011-8-29 22:41
求助 我用APMServ5.2.6搭建PHP平台没有成功 请指教 方便的话加我QQ21883266 我截图给你看 有个地方不明白
Aug4
2011-8-26 18:14
void prename_setproctitle(const char *fmt, ...)
{
char *p;
int i;
char buf[MAXLINE];
extern char **g_main_Argv;
extern char *g_main_LastArgv;
va_list ap;
p = buf;
va_start(ap, fmt);
vsprintf(p, fmt, ap);
va_end(ap);
i = strlen(buf);
if (i > g_main_LastArgv - g_main_Argv[0] - 2)
{
i = g_main_LastArgv - g_main_Argv[0] - 2;
buf[i] = '\0';
}
(void) strcpy(g_main_Argv[0], buf);
p = &g_main_Argv[0][i];
/*不太明白为啥后面的都要清空呢,清空后,为啥g_main_Argv【2】等后面还是有输出?*/
while (p < g_main_LastArgv)
*p++ = '\0';//SPT_PADCHAR;
g_main_Argv[1] = NULL;
#ifdef Linux
prctl(PR_SET_NAME,buf);
#endif
}
这是我看您的源码的时候,遇到的一些不理解的地方。原先是从argv[0]一直到env结束的(ARGV和ENV在内存中一定是连续的吗?),后来将新的程序名字(包括参数)全部都覆盖到argv[0]了,但是这时候原来的argv[1],argv[2]就变乱了。。
比如这样运行:./prename param1 param2 param3
重命名后我在输出argv,:
argv[0]=[love] ./prename param1 param2 param3
argv[1]=(null)
argv[2]= param1 param2 param3
argv[3]= param2 param3
是不是重命名只是完全单纯影响ps -ef查看?对程序没有其他影响?(如果我不再次使用argv[1],argv[2]的话),另外这样操作之后,程序中用到的环境变量env是否有影响?请民大师兄一定要解答呀。。。
{
char *p;
int i;
char buf[MAXLINE];
extern char **g_main_Argv;
extern char *g_main_LastArgv;
va_list ap;
p = buf;
va_start(ap, fmt);
vsprintf(p, fmt, ap);
va_end(ap);
i = strlen(buf);
if (i > g_main_LastArgv - g_main_Argv[0] - 2)
{
i = g_main_LastArgv - g_main_Argv[0] - 2;
buf[i] = '\0';
}
(void) strcpy(g_main_Argv[0], buf);
p = &g_main_Argv[0][i];
/*不太明白为啥后面的都要清空呢,清空后,为啥g_main_Argv【2】等后面还是有输出?*/
while (p < g_main_LastArgv)
*p++ = '\0';//SPT_PADCHAR;
g_main_Argv[1] = NULL;
#ifdef Linux
prctl(PR_SET_NAME,buf);
#endif
}
这是我看您的源码的时候,遇到的一些不理解的地方。原先是从argv[0]一直到env结束的(ARGV和ENV在内存中一定是连续的吗?),后来将新的程序名字(包括参数)全部都覆盖到argv[0]了,但是这时候原来的argv[1],argv[2]就变乱了。。
比如这样运行:./prename param1 param2 param3
重命名后我在输出argv,:
argv[0]=[love] ./prename param1 param2 param3
argv[1]=(null)
argv[2]= param1 param2 param3
argv[3]= param2 param3
是不是重命名只是完全单纯影响ps -ef查看?对程序没有其他影响?(如果我不再次使用argv[1],argv[2]的话),另外这样操作之后,程序中用到的环境变量env是否有影响?请民大师兄一定要解答呀。。。
张宴 回复于 2011-8-29 18:26
是的。只是为了在argv[1],argv[2]不再使用的情况下,单纯影响ps -ef查看,对程序没有其他影响。这是因为很多系统管理员习惯直接 ./httpsqs 运行程序,这样改可以方便其他系统管理员 ps -ef 查看时清晰地看到程序的绝对路径、启动参数、父子进程。