Как установить аргументы командной строки в программе на 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 x.c
1 ответ
Решение
У вас была правильная идея, но вы не меняете указатели в 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
зависит от системы).