在 Windows 7 机器上:-
我有一个在命令提示符 [主进程] 上启动的主 (Python) 程序。
该程序生成一个子 (Python) 程序 [子进程]。
我关闭命令提示符。
结果:-
- 子进程立即结束。
另一方面,如果我从任务管理器结束主程序,我观察到子进程仍在运行。
我想知道为什么这两种方法没有相同的结果?在这两种情况下是否发送了一些不同的信号?
在 Windows 7 机器上:-
我有一个在命令提示符 [主进程] 上启动的主 (Python) 程序。
该程序生成一个子 (Python) 程序 [子进程]。
我关闭命令提示符。
结果:-
另一方面,如果我从任务管理器结束主程序,我观察到子进程仍在运行。
我想知道为什么这两种方法没有相同的结果?在这两种情况下是否发送了一些不同的信号?
对该问题的评论指出我得到了答案。
我subprocess.Popen(args)
用来产生子进程。这将成功生成子进程,但子进程将在与其父进程相同的命令窗口中启动。
通过subprocess Popen doc,我发现要传递一些额外的参数,以便在另一个命令窗口中启动子进程。
使用以下论点启动孩子解决了我的问题。
subprocess.Popen(args, shell=True, creationflags=subprocess.CREATE_NEW_CONSOLE)
最后一个参数 subprocess.CREATE_NEW_CONSOLE 仅适用于 Windows。