2013-08-25 2 views
0

나는 리눅스 시스템 프로그래밍을 읽고있다.왜 os.system은 SIGINT를 무시하지 않습니까?

system(command) 기능을 도입 할 때 command 실행 중에 SIGINT이 실행되지 않는다고 명시되어 있습니다. 이제

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") 

:

그래서, os.system 가정하면 기본 시스템 기능의 단지 래퍼입니다, 나는 다음과 같은 시도 내가 system와 함께 loop.py을 실행하고 있는데, SIGINT가 무시 될 것으로 예상하고 있지만 실행중인 프로그램에서 CTRL + C를 사용할 때 여전히 k를 얻습니다. illed.

os.system이 (가) system() 기능과 다른 이유는 무엇입니까?

답변

3

SIGINTsystem (system이 실행되는 동안)을 호출하는 응용 프로그램에서 무시됩니다. system에 의해 생성 된 응용 프로그램에서는 무시되지 않습니다. 따라서 CTRL + C를 누르면 loop.py의 실행을 중단하지만 test_loop.py은 실행을 중단합니다. 따라서 system 호출 후 일부 코드를 추가하면 CTRL + c를 누르면 해당 코드가 실행됩니다.

관련 문제