如何在C程序中设置命令行参数,以便在用户键入“ps aux”时可以看到它?

键入“ps aux”时,ps命令显示运行程序的命令参数。 有些程序会将此更改为指示状态的方式。 我试过改变argv []字段,但它似乎不起作用。 是否有一种标准的方法来设置命令行参数,以便在用户键入ps时它们出现?

也就是说,这不起作用:

int main(int argc,char **argv) { argv[0] = "Hi Mom!"; sleep(100); } 09:40 imac3:~$ ./x & [2] 96087 09:40 imac3:~$ ps uxp 96087 USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND yv32 96087 0.0 0.0 2426560 324 s001 S 9:40AM 0:00.00 ./x 09:40 imac3:~$ cat xc 

你有正确的想法,但你不改变argv[n]指针 ,你必须改变argv[0]本身指向的字符串:

 #include  #include  int main(int argc,char **argv) { size_t maxlen = strlen(argv[0]); memset(argv[0], 0, maxlen); strncat(argv[0], "Hi Mom!", maxlen); pause(); return 0; } 

(请注意,这是否实际更改ps显示的命令名称取决于系统)。