2
是什么开始为python3.2+
下Linux
与subprocess.Popen
一个新的进程这两个选项之间的区别:差异
proc = subprocess.Popen(args, ..., preexec_fn=os.setsid) # 1
proc = subprocess.Popen(args, ..., start_new_session=True) # 2
我需要这个,因为我需要设置进程组身份证有可能立即杀死这个过程及其所有的孩子。这是在随后的情况下使用,如果进程中运行时间超过一定的阈值:
try:
out, err = proc.communicate(timeout=time_max)
except subprocess.TimeoutExpired:
os.killpg(os.getpgid(proc.pid), signal.SIGTERM)
我测试我的代码与这两个选项(#1
& #2
),他们似乎都为我工作正常。
但我想知道这里最好的选择是什么 - 与preexec_fn
或start_new_session
?