You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何实现父进程退出后仍保持子进程持续存活?

问题根源

你当前使用的代码在Windows平台下失效,核心原因是子进程默认继承了父进程的标准输入、输出、错误句柄。Python脚本退出时这些句柄会被系统回收,子进程操作无效IO句柄时会直接崩溃,表现为随脚本同步终止,甚至看起来没有启动成功。


修复后可用代码

import sys
import subprocess
import os

# 优先使用绝对路径,避免相对路径解析错误
path = os.path.abspath(r'你的child.exe完整路径')
args = [path]

subprocess.Popen(
    args,
    creationflags=subprocess.DETACHED_PROCESS | subprocess.CREATE_NEW_PROCESS_GROUP,
    # 重定向所有标准IO到空设备,切断和父进程的IO关联
    stdin=subprocess.DEVNULL,
    stdout=subprocess.DEVNULL,
    stderr=subprocess.DEVNULL,
    # 关闭所有父进程继承的非标准文件句柄
    close_fds=True
)
sys.exit()

可选调整说明

  • 如果你需要保留子进程的控制台窗口查看输出,可以将DETACHED_PROCESS替换为CREATE_NEW_CONSOLE,子进程会独立启动控制台窗口,同样不会随父进程退出终止
  • 验证逻辑时可以先将path替换为系统自带的notepad.exe,运行脚本后记事本正常打开不关闭,说明逻辑本身没有问题,再排查你自有child.exe的启动报错问题

内容的提问来源于stack exchange,提问作者Eby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:45:04