设置进程的显示名称 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 9时,
一直觉得nginx显示master和worker进程名字的方式很酷,一目了然,相比之下apache就逊色一点。 root&&&& 23340&&&& 1& 0 May24 ?&&&&&&& 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nobody&& & 0 May24 ?&&&&&&& 00:00:00 nginx: worker process
查看nginx源码,大致了解了这个过程。假设需要把a.out的ps名称修改为title,那么需要把title复制到argv[0]指向的内存,并且把argv[1]设为0,但是argv[0]指向的内存不一定容得下title。在linux下,argv和environ指向的内存是连续的,我们可以malloc能容得下environ的内存,把environ的内容复制到malloc出的内存里,让title占用environ现在的内存。environ的内存足够放的下title。
下面的代码参考nginx的代码编写,注释主要表明argv和environ的布局,要写initProcTitle和setProcTitle两个函数,是为了多进程的需要,fork之前调用init,fork之后调用set设置父进程和子进程的名字。
代码片段(1)
1.&[代码][C/C++]代码&&&&
#include &stdlib.h&
#include &stdio.h&
#include &string.h&
#include &unistd.h&
/* example
* ./a.out start
* memory layout, supporse ptr point to it
* ./a.out\0start\0HOSTNAME=vbloger\0TERM=linux\0
* argc = 2;
* argv[0] =
* argv[1] = ptr + strlen(argv[0])+1;
* argv[2] = 0;
* environ[0] = ptr + strlen(argv[0])+1 + strlen(argv[1])+1
* environ[1] = ptr + strlen(argv[0])+1 + strlen(argv[1])+1 + strlen(environ[0])+1
* environ[2] = 0;
extern char **
void initProcTitle(int argc, char **argv)
size_t size = 0;
for (int i = 0; environ[i]; ++i) {
size += strlen(environ[i])+1;
char *raw = new char[size];
for (int i = 0; environ[i]; ++i) {
memcpy(raw, environ[i], strlen(environ[i]) + 1);
environ[i] =
raw += strlen(environ[i]) + 1;
last = argv[0];
for (int i = 0; i & ++i) {
last += strlen(argv[i]) + 1;
for (int i = 0; environ[i]; ++i) {
last += strlen(environ[i]) + 1;
void setProcTitle(int argc, char **argv, const char *title)
argv[1] = 0;
char *p = argv[0];
memset(p, 0x00, last - p);
strncpy(p, title, last - p);
int main(int argc, char *argv[])
initProcTitle(argc, argv);
setProctitle(argc, argv, "master so much argument can you believe");
sleep(30);
// you can ps now
开源中国-程序员在线工具:
相关的代码(64)
37回/22628阅
0回/6602阅
3回/5992阅
2回/5286阅
16回/5030阅
[Shell/批处理]
42回/4765阅
15回/4074阅
11回/4014阅
2回/3927阅
[Google Go]
1回/3629阅
开源从代码分享开始
鉴客的其它代码进程用户名是SYSTEM是什么意思?_百度知道猜你感兴趣
&-&热门文章QQ仙灵游戏名字
所属分类:
是否纳吉之子
断翼华尔兹
○&じy&峰べ
瓦里安大帝
贫僧法号是枭雄
幽默你人生丶
发布_你的爱
等台风的旗子
请来一盘五花肉
丨洛暖阳丨
丶浪费我时间
0天上有猪在飞0
这个可以注嘛
羊中一棵葱
1、气质男纸
2、『衰』仔。
如果您喜欢这篇文章,请分享给您的好友。原文地址:QQ仙灵游戏名字 /wangluo/615.html。
最新游戏名字
随机游戏名字
推荐游戏名字