Во-первых, я не уверен, что просто настройки argv[0]
в программе C переносимым меняет имя, показанное в ps
. Возможно, это происходит в некоторых unixen, но я понимаю, что этого не ожидается.
Во-вторых, поскольку Windows специально не совместима с POSIX, только несколько вещей «переносятся» между POSIX и не-POSIX. Поскольку вы конкретно говорите «ps», я предполагаю, что POSIX является вашим приоритетом, и Windows может не работать.
Что еще более важно, мое понимание изменения argv[0]
состоит в том, что для внесения этих изменений требуется позвонить exec
. В частности, вызов exec
имеет как путь к исполняемому файлу, так и отдельный список argv
. Создание собственного вызова позволяет вам разорвать соглашение оболочки о посылке исполняемого имени в argv[0]
.
У вас есть OS library process management, который дает вам прямой доступ к библиотеке ОС для этого. Вы должны рассмотреть возможность разбить свой сценарий на две части - стартер и «настоящую работу». Стартер устанавливает среду выполнения, а exec - реальную работу с требуемыми параметрами.
В C вы заменяете свой собственный процесс другим. В Python вы заменяете старый интерпретатор Python новым, у которого есть другой argv [0]. Надеюсь, на этом не будет. Некоторые программы проверяют argv [0], чтобы решить, что они делают.
У вас также есть subprocess.popen, который вы можете использовать, чтобы установить нужные аргументы и исполняемые файлы. В этом случае, однако, родительский процесс должен задерживаться, чтобы собрать ребенка, когда ребенок закончит. Родитель может не делать ничего больше, чем Popen.wait
см. также https://superuser.com/questions/427642/is-it-possible-to-set-the-process-name-with-pythonw, где http: // bugs.python.org/issue5672 - это я ntionned – anarcat