したがって、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 を使用しています。