Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启动启动程序并等待它们在Python中完成的脚本_Python_Linux_Perl_Subprocess_Python Os - Fatal编程技术网

启动启动程序并等待它们在Python中完成的脚本

启动启动程序并等待它们在Python中完成的脚本,python,linux,perl,subprocess,python-os,Python,Linux,Perl,Subprocess,Python Os,我有一个Perl脚本,它启动一些程序,然后在程序在后台运行时结束。我想编写一个Python脚本,它能够等待那些启动的程序完成,而不仅仅是Perl脚本 我试过这个: import subprocess subprocess.call(('./perl_script.pl')) 这是: import subprocess p = subprocess.Popen(('./perl_script.pl')) p.wait() 但在这两种情况下,程序都在perl_script.pl完成时完成,而

我有一个Perl脚本,它启动一些程序,然后在程序在后台运行时结束。我想编写一个Python脚本,它能够等待那些启动的程序完成,而不仅仅是Perl脚本

我试过这个:

import subprocess

subprocess.call(('./perl_script.pl'))
这是:

import subprocess

p = subprocess.Popen(('./perl_script.pl'))
p.wait()

但在这两种情况下,程序都在perl_script.pl完成时完成,而不是在启动的程序完成时完成

为什么不在perl脚本中等待启动的程序结束呢?这听起来比从一个脚本控制在另一个脚本中启动的程序要容易得多;孤立进程由init进程继承。但是你看。(很难看出您将如何在您的用例中利用它,特别是在python中。)@GilHamilton:
prctl(PR\u SET\u CHILD\u SUBREAPER)
可以在python中使用
ctypes
调用。但是我会先尝试
shell=True
并重定向stdin/stdout/stderr。。。(对于博士生导师的老剧本,是的)