По-перше, я не впевнений, що просто налаштування argv[0]
програми C переносять змінне ім'я, вказане в ps
. Можливо, це відбувається в деяких Unixen, але я розумію, що це не очікується.
По-друге, оскільки Windows спеціально не сумісний з POSIX, лише кілька речей є "портативними" між POSIX та non-POSIX. Оскільки ви спеціально говорите "ps", я припускаю, що POSIX є вашим пріоритетом, і Windows може не працювати.
Що ще важливіше, моє розуміння змін argv[0]
полягає в тому, що exec
для здійснення цих змін потрібен заклик . Зокрема, exec
виклик має як шлях до виконуваного файлу, так і окремий argv
список. Здійснення власного виклику дозволяє вам порушити домовленість оболонки про введення виконуваного імені argv[0]
.
У вас є управління процесами бібліотеки ОС яке дає вам прямий доступ до бібліотеки ОС для цього. Вам слід подумати про розбиття вашого сценарію на дві частини - початкову і "справжню роботу". Стартер встановлює середовище виконання і виконує реальну роботу з бажаними параметрами.
У C ви замінюєте власний процес іншим. У Python ви замінюєте старий інтерпретатор Python новим, який має інший argv [0]. Будемо сподіватися, що це не завадить. Деякі програми перевіряють argv [0], щоб вирішити, що вони роблять.
У вас також є subprocess.popen, за допомогою якого ви можете встановити потрібні аргументи та виконуваний файл. Однак у цьому випадку батьківський процес повинен тривати, щоб забрати дитину, коли дитина закінчить. Можливо, батько не робить нічого більше, ніж aPopen.wait