0

在 Windows 7 机器上:-

  • 我有一个在命令提示符 [主进程] 上启动的主 (Python) 程序。

  • 该程序生成一个子 (Python) 程序 [子进程]。

  • 我关闭命令提示符。

结果:-

  • 子进程立即结束。

另一方面,如果我从任务管理器结束主程序,我观察到子进程仍在运行。

我想知道为什么这两种方法没有相同的结果?在这两种情况下是否发送了一些不同的信号?

4

1 回答 1

1

对该问题的评论指出我得到了答案。

subprocess.Popen(args)用来产生子进程。这将成功生成子进程,但子进程将在与其父进程相同的命令窗口中启动。

通过subprocess Popen doc,我发现要传递一些额外的参数,以便在另一个命令窗口中启动子进程。

使用以下论点启动孩子解决了我的问题。

subprocess.Popen(args, shell=True, creationflags=subprocess.CREATE_NEW_CONSOLE)

最后一个参数 subprocess.CREATE_NEW_CONSOLE 仅适用于 Windows。

于 2014-02-01T19:28:23.547 回答