Ich muss den Prozessnamen meines Programms in der Sprache C ändern.
Ich präzis, das ist nicht der Name eines Threads, den ich ändern möchte.
Ich möchte den Namen meines Programms ändern, aber die einzige Lösung, die ich gefunden habe, ist, den Wert von argv[0]
zu ändern.
Ich habe auch eine andere Lösung mit prctl(PR_SET_NAME, "newname")
gefunden, aber diese Lösung funktioniert nicht.
Die Unterschiede zwischen prctl
und argv[0]
sind:
argv[0]
ändert Informationen in /proc/$pid/cmdline
prctl(PR_SET_NAME)
ändert Informationen in /proc/$pid/status
Das bedeutet, dass Sie den Differenznamen Ihres Prozesses erhalten, der ps -a
und ps -ax
ausgibt.
Wenn Sie während der Ausführung von ps denselben Prozessnamen für verschiedene Argumente erwarten, können Sie beides tun (z. B. argv[0]
ändern und prctl
aufrufen).
Ich hoffe, die Antwort hilft.
versuche das:
%Vor%/ * erklären: Der für argv [0] reservierte Speicherplatz könnte kleiner als der Name sein, den Sie angeben möchten, und Sie werden dann einen anderen nicht verwandten Speicher überschreiben. argv [0] Größe könnte nur 2 sein und wenn Ihr Prozessname "averylongprocessname" ist, werden Sie argv [0] überlaufen. Sie müssen strlen (argv [0]) und das in memcpy verwenden. thx @ecerulm
* /