2013-08-25 176 views
0

我正在閱讀Linux系統編程。爲什麼os.system忽略SIGINT?

當介紹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.pysystem,我期望SIGINT被忽略,但是當我在運行的程序上使用CTRL + C時,它仍然會得到k illed。

任何想法爲什麼os.system不同於system()函數?

回答

3

SIGINT被調用system的應用程序忽略(只要執行system)。它不會被system產生的應用程序忽略。因此,如果您按CTRL + C,則會中止執行loop.py,但不會執行test_loop.py。因此,如果您在致電system之後添加一些代碼,您會看到在按CTRL + C後將執行該代碼。