Собственно вопрос, как сделать чтобы в PS вместо
user PID 0.0 0.0 1700 316 pts/3 S+ 17:20 0:00 process --param
Отображалось что-то вроде
user PID 0.0 0.0 1700 316 pts/3 S+ 17:20 0:00 mycoolprocessname
Пока додумался только до замены argv[0], но что-то мне кажется что это далеко не оптимальный способ.
#include <signal.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
char tmps[256];
char *vp = NULL;
void sghdl(int s) {
if(s == SIGUSR1) strncpy(vp,tmps,255);
}
void pcaption(pid_t pid, char *vpf, const char *caption) {
strncpy(tmps,caption,255);
vp = vpf;
kill(pid, SIGUSR1);
}
int main(int c, char **v) {
pid_t cpid, ppid;
signal(SIGUSR1, &sghdl);
cpid = fork();
if(cpid == 0) {
ppid = getpid();
pcaption(ppid, v[0], "<child>");
sleep(20);
} else {
ppid = getpid();
pcaption(ppid, v[0], "<parent>");
wait();
}
}