如何在Python中启动外部进程且无需等待其完成/返回?
在Ubuntu 22.10中用Python启动外部程序后直接终止脚本
以下几种方法可以实现启动浏览器、计算器等程序后,Python脚本立即终止,无需等待外部程序关闭:
方法1:使用subprocess.Popen(推荐)
subprocess是Python官方推荐替代os.system的模块,通过Popen配合start_new_session=True参数,能让启动的程序脱离当前Python进程的控制,脚本结束后程序仍可正常运行。
import subprocess # 启动Brave浏览器 subprocess.Popen(["/usr/bin/brave-browser"], start_new_session=True)
方法2:结合bash后台运行命令
在bash命令后添加&让程序后台运行,同时用nohup忽略挂起信号,避免脚本退出时终止外部程序。重定向输出到/dev/null可以防止生成多余的nohup.out文件。
import os os.system("nohup /usr/bin/brave-browser > /dev/null 2>&1 &")
方法3:使用os.fork()底层实现
通过fork子进程来执行外部程序,父进程直接退出,子进程替换为目标程序继续运行。
import os import sys # 创建子进程 if os.fork() == 0: # 子进程替换为浏览器程序 os.execv("/usr/bin/brave-browser", ["/usr/bin/brave-browser"]) # 父进程直接退出 sys.exit()
内容的提问来源于stack exchange,提问作者Chicky
相关产品推荐
相关产品推荐

