Я пытаюсь запустить полностью независимый процесс из python. Я не могу использовать что-то простое, например os.startfile, поскольку мне нужно передать аргументы. В настоящее время я использую subprocess.popen, который дает мне 90% пути.
args = ["some_exe.exe", "some_arg", "another_arg"]
subprocess.Popen(args, creationflags=DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
Использование popen с отдельными флагами создания и трудами для std * запускает новый процесс, который живет после смерти родительского процесса. Так что все хорошо. Проблема в том, что новый "дочерний" процесс по-прежнему содержит дескриптор phantom для родителя. Поэтому, если я пытаюсь удалить родительский exe (мой python script входит в exe через pyinstaller), msiexec жалуется, что родительский exe все еще используется.
Таким образом, цель состоит в том, чтобы создать совершенно независимый процесс для запуска "some_exe.exe", который не имеет дескриптора исходного процесса.
Примечание. Это для Windows XP и выше. Я развиваюсь на Win7.