Erstens bin ich mir nicht sicher, ob einfache Einstellungen argv[0]
in einem C-Programm den Namen in ändern ps
. Vielleicht tut es in einigen Unixen, aber ich verstehe, dass es nicht erwartet wird.
Zweitens, da Windows speziell nicht POSIX-kompatibel ist, sind nur wenige Dinge zwischen POSIX und Nicht-POSIX "portabel". Da Sie ausdrücklich "ps" sagen, gehe ich davon aus, dass POSIX Ihre Priorität ist und Windows möglicherweise nicht funktioniert.
Noch wichtiger ist, dass ich verstehe, argv[0]
dass Änderungen erforderlich sind exec
, um diese Änderungen vorzunehmen. Insbesondere hat der exec
Aufruf sowohl einen Pfad zu einer ausführbaren Datei als auch eine separate argv
Liste. Wenn Sie Ihren eigenen Anruf tätigen, können Sie die Shell-Konvention zum Einfügen des ausführbaren Namens brechen argv[0]
.
Sie verfügen über eine Prozessverwaltung für die Betriebssystembibliothek, mit der Sie direkt auf die Betriebssystembibliothek zugreifen können. Sie sollten in Betracht ziehen, Ihr Skript in zwei Teile zu teilen - einen Starter und die "echte Arbeit". Der Starter legt die Laufzeitumgebung fest und führt die eigentliche Arbeit mit den gewünschten Parametern aus.
In C ersetzen Sie Ihren eigenen Prozess durch einen anderen. In Python ersetzen Sie den alten Python-Interpreter durch einen neuen mit einem anderen Argument [0]. Hoffentlich wird es das nicht verhindern. Einige Programme überprüfen argv [0], um zu entscheiden, was sie tun.
Sie haben auch subprocess.popen , mit dem Sie die gewünschten Argumente und die ausführbare Datei festlegen können. In diesem Fall sollte der übergeordnete Prozess jedoch verweilen, um das Kind zu sammeln, wenn das Kind fertig ist. Der Elternteil darf nicht mehr als a tunPopen.wait