所以我有这个在C运行时更改进程名称的任务,我偶然发现了这个:http ://www.uofr.net/~greg/processname.html
现在首先,我知道改变 argv[0] 的危险(但是关于 Linux 和 UNIX 的东西还有很长的路要走)所以请不要讲它,我只是想知道为什么它不是在 Ubuntu 上工作。
这是我使用的测试源:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(int argc, char *argv[]) {
int argv0size = strlen(argv[0]);
int onetwothree = 1;
char* abc = (char *) malloc(sizeof(char) * (17 + 1));
sprintf(abc,"ApplicationName%.3d",onetwothree);
strncpy(argv[0], abc ,argv0size);
getchar();
}
我只在 Mac OS X 和 Ubuntu 上对其进行了测试,并且它在 Mac OS X 上运行。我不知道为什么它在 Ubuntu 上不起作用。它不起作用的可能原因是什么?
我使用 gcc 作为编译器。