I'm trying to launch a completely independent process from python. I can't use something simple like os.startfile
since I need to pass arguments. Currently I'm using subprocess.popen
which gets me 90% of the way there.
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)
Using popen
with detached creation flags & pipes for std* does start a new process that lives after the parent process dies. So thats all good. The problem is that the new 'child' process still holds a phantom handle to the parent. So if I try to uninstall the parent exe (my python script is bundled into an exe via pyinstaller) msiexec complains that the parent exe is still in use.
So the goal is to spawn a totally independent process to run "some_exe.exe" that doesn't have any handle back to the original process.
Note: This is for Windows XP and above. I'm developing on Win7.