栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

python IRC-Channel(Freenode)中的某人通过指出 subprocess.Popen (…)

preexec_fn 参数来帮助我:

如果将 preexec_fn 设置为可调用对象,则将在执行子级之前在子进程中调用此对象。(仅Unix)

因此,以下代码解决了该问题(仅UNIX):

import subprocessimport signaldef preexec_function():    # Ignore the SIGINT signal by setting the handler to the standard    # signal handler SIG_IGN.    signal.signal(signal.SIGINT, signal.SIG_IGN)my_process = subprocess.Popen(    ["my_executable"],    preexec_fn = preexec_function)

注意: 实际上并没有阻止信号到达子过程。相反,上面的 preexec_fn会 覆盖信号的默认处理程序,以便忽略该信号。因此,如果子 进程
再次覆盖 SIGINT 处理程序,则此解决方案 可能 不起作用。 __

另一个注意事项:
该解决方案适用于各种子流程,即它也不限于使用Python编写的子流程。例如,我为其编写包装程序的专用服务器实际上是用Java编写的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659526.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号