相关疑难解决方法(0)

Python:如何防止子进程接收CTRL-C/Control-C/SIGINT

我目前正在为shell中运行的专用服务器开发包装器.包装器通过子进程生成服务器进程,并观察并响应其输出.

必须明确地为专用服务器提供一个命令才能正常关闭.因此,CTRL-C不得访问服务器进程.

如果我捕获KeyboardInterrupt异常或覆盖python中的SIGINT处理程序,服务器进程仍然会收到CTRL-C并立即停止.

所以我的问题是:如何防止子进程接收CTRL-C/Control-C/SIGINT?

python subprocess signals sigint keyboardinterrupt

40
推荐指数
4
解决办法
1万
查看次数

从python运行程序,并在脚本被终止后继续运行

我试过这样的事情:

subprocess.Popen(['nohup', 'my_command'],
                 stdout=open('/dev/null', 'w'),
                 stderr=open('logfile.log', 'a'))
Run Code Online (Sandbox Code Playgroud)

如果父脚本正常退出,则此方法有效,但如果我终止脚本(Ctrl-C),则所有子进程也将被终止.有办法避免这种情况吗?

我关心的平台是OS X和Linux,使用的是Python 2.6 Python 2.7.

python subprocess nohup

37
推荐指数
3
解决办法
3万
查看次数

标签 统计

python ×2

subprocess ×2

keyboardinterrupt ×1

nohup ×1

sigint ×1

signals ×1