运行新的cygwin shell并在我需要时杀死它

2024-06-09 05:42:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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)

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

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


Tags: run命令脚本trueapp应用程序format终端