我试着用Python做一些非常简单的事情,但没有成功。我想从python内部运行一个可执行文件,这样当调用python脚本退出时-已经启动的exe继续运行。也就是说,要在独立的进程中运行exe,就不需要在进程和创建进程之间进行任何进程间的通信。
Windows 10中当前的目标操作系统(不是linux,因此linux/unix解决方案不适用),但理想情况下,解决方案应该是独立于平台的。我尝试了两种不同的方法:使用subprocess.Popen()和os.system()
我一直未能找到任何“显而易见”的解决方案,或在同一主题的不同帖子中提出的解决方案。下面给出的各种尝试的列表-注释掉了。在这里,记事本只是用于测试-实际的可执行文件是不同的,并采取命令行args。
当python脚本退出时(在VS代码中),记事本就消失了。
import os
import subprocess
# attempts using popen()
# ----------------------
popen_args = [r'C:\Windows\System32\Notepad.exe']
# subprocess.Popen(popen_args)
# subprocess.Popen(popen_args, shell=True)
# subprocess.Popen(popen_args, creationflags=subprocess.DETACHED_PROCESS)
# subprocess.Popen(popen_args, creationflags=subprocess.CREATE_NEW_CONSOLE)
# subprocess.Popen(popen_args, creationflags=subprocess.DETACHED_PROCESS | subprocess.CREATE_NEW_PROCESS_GROUP)
# subprocess.Popen(popen_args, shell=True, creationflags=subprocess.DETACHED_PROCESS | subprocess.CREATE_NEW_PROCESS_GROUP)
# subprocess.Popen(popen_args, close_fds=True, creationflags=subprocess.DETACHED_PROCESS | subprocess.CREATE_NEW_PROCESS_GROUP)
# subprocess.Popen(popen_args, close_fds=True, shell=True, creationflags=subprocess.DETACHED_PROCESS | subprocess.CREATE_NEW_PROCESS_GROUP)
# subprocess.Popen(popen_args, start_new_session=True)
# subprocess.Popen(popen_args, start_new_session=True, creationflags=subprocess.DETACHED_PROCESS | subprocess.CREATE_NEW_PROCESS_GROUP)
# subprocess.Popen(popen_args, start_new_session=True, close_fds=True, creationflags=subprocess.DETACHED_PROCESS | subprocess.CREATE_NEW_PROCESS_GROUP)
# subprocess.Popen(popen_args, start_new_session=True, close_fds=True, shell=True, creationflags=subprocess.DETACHED_PROCESS | subprocess.CREATE_NEW_PROCESS_GROUP)
# subprocess.Popen(popen_args, shell=True, stdout=None, stdin=None)
# subprocess.Popen(popen_args, shell=True, stdout=None, stdin=None, start_new_session=True)
# subprocess.Popen(popen_args, close_fds=True, stdout=None, stdin=None, start_new_session=True)
# subprocess.Popen(popen_args, close_fds=True, stdout=None, stdin=None, start_new_session=True, creationflags=subprocess.DETACHED_PROCESS | subprocess.CREATE_NEW_PROCESS_GROUP)
# attempts using os.system()
# --------------------------
# os.system(r'START "" C:\Windows\System32\Notepad.exe')
# os.system(r'START /b "" "C:\Windows\System32\Notepad.exe"')
有趣的是-运行系统“启动.”cmd控制台中的命令确实会导致记事本在主机cmd控制台关闭后继续进行。
我在很多不同的语言中都做过类似的操作--但在python中却遇到了困难。
更新
发布于 2021-08-16 03:38:52
经测试及证明:
import os
os.system("notepad")
这对我来说很好。
https://stackoverflow.com/questions/68797058
复制相似问题