0

我创建了一个在 cygwin 上运行的应用程序,它将打开一些新的 shell 并在每个 shell 上运行 python 脚本。当我想控制新的 shell 并随意杀死它们时,问题就开始了。经过大量挖掘后,我决定使用以下命令:

subprocess.run('mintty.exe -t {} -h always -e {} &'.format(app_name, run_app_cmd), shell = True)

稍后当我想杀死它时,请使用:

subprocess.run('kill -2 {}'.format(apps[app].shell_pid), shell = True).

它工作得很好,直到我意识到很多时候新终端卡住并且没有响应,我不喜欢它。我进行了更多挖掘,发现虽然我认为当前 mintty 上的 python 执行命令并打开新终端,但实际发生的是 windows 主机打开了新的 mintty(新终端的 PPID 为 1 ),然后信号可能会遇到一些窗口问题等。我希望每个脚本在一个单独的终端中的原因是它们每个都有很多输出,我希望它们在不同的窗口中。

现在,在所有这些解释之后,有什么办法可以防止这种情况发生吗?我不希望这些卡成为我生活的一部分...

4

0 回答 0