Ändern Sie den Prozessnamen, ohne argv [0] in Linux zu ändern

8

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.

    
Jérémy Magrin 23.04.2013, 09:24
quelle

2 Antworten

17

Die Unterschiede zwischen prctl und argv[0] sind:

  • modify argv[0] ändert Informationen in /proc/$pid/cmdline
  • Aufruf von 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.

    
Wayne 15.06.2013, 03:53
quelle
-1

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

* /

    
LingYFH 05.03.2014 11:29
quelle

Tags und Links