5

当您键入“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
4

1 回答 1

5

你有正确的想法,但你不改变指针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;
}

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

于 2010-09-21T14:00:15.427 回答