我正在阅读Linux系统编程。
在介绍system(command)
函数时,本书指出在执行command
期间,SIGINT
会被忽略。
因此,假设os.system
只是底层系统函数的包装器,我尝试以下方法:
loop.py
while True:
print 'You should not be able to CTRL+C me ;p'
test_loop.py
import os
os.system("python loop.py")
现在我正在使用loop.py
执行system
,我希望忽略SIGINT,但是当我在正在运行的程序上使用CTRL + C时,它仍会被杀死。
知道为什么os.system
与system()
函数不同?
答案 0 :(得分:3)
SIGINT
的应用程序会忽略 system
(只要system
正在执行)。由system
生成的应用程序不会忽略它。因此,如果你点击CTRL + c,那将中止loop.py
的执行,而不是test_loop.py
的执行。因此,如果您在调用system
后添加一些代码,则会在按CTRL + c后看到该代码将执行。