我尝试运行以下代码:
subprocess.Popen(['nohup', 'my_command'],
stdout=open('/dev/null', 'w'),
stderr=open('logfile.log', 'a'))
如果父进程正常退出,这个方法是有效的,但如果我杀死脚本(Ctrl-C),所有的子进程也会被杀死。有没有办法避免这种情况发生?
我关心的平台是OS X和Linux,使用Python 2.6 和 Python 2.7。
stdout
和stderr
参数,为什么我的命令会在某个时候停止(进程死亡),我很好奇。 - danukershell=True
,那么creationflags=subprocess.CREATE_NEW_CONSOLE
可能是您想要的。 - Pro Qsetpgrp
,是否需要使用nohup
?后者不会使子进程无法从父进程接收到SIGHUP
信号吗,因为它已经不再是同一进程组的一部分了? - rcorre