键入"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 x.c
Run Code Online (Sandbox Code Playgroud)
你有正确的想法,但你不改变指针中argv[n],您必须更改指向的字符串argv[0]本身:
#include <string.h>
#include <unistd.h>
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;
}
Run Code Online (Sandbox Code Playgroud)
(请注意,这实际上是否更改了显示的命令名称ps取决于系统).