为什么os.system没有忽略SIGINT?

时间:2013-08-25 08:12:01

标签: python linux

我正在阅读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.systemsystem()函数不同?

1 个答案:

答案 0 :(得分:3)

调用SIGINT的应用程序会忽略

system(只要system正在执行)。由system生成的应用程序不会忽略它。因此,如果你点击CTRL + c,那将中止loop.py的执行,而不是test_loop.py的执行。因此,如果您在调用system后添加一些代码,则会在按CTRL + c后看到该代码将执行。