2012-06-30 3 views
0

DNSPython 라이브러리를 사용하여 SubDomain을 해결하는 프로그램을 작성했습니다.
는 프로그램이 실행되는 경우 및 서브 도메인은 내가 Ctrl 키를C 신호 처리 종료 핸들러를 작성 해결 : 사용자가 가 Ctrl 키를C 프로그램이 종료되지 않습니다 누르면python exit 처리기가 프로그램을 검사 할 때 probebly 작업을하지 않습니다.

def exitHandler(signum = 0, frame = 0): 
    print("Kill Process..") 
    os.kill(os.getpid(), 9) 
    sys.exit(0) 

을 즉시 그리고 어떤 경우에는 프로그램이 잠긴다!
이 문제를 어떻게 해결할 수 있습니까?

+1

내부에서 프로세스를 종료하려고합니까? 그건 불필요한 것 같습니다. 이 코드를 어딘가에서 찾았습니까? 그 이론적 근거를 알고 싶습니다. –

+2

파이썬의 신호 처리기는 파이썬 연산 코드 사이의 안전한 지점에서만 인터프리터에 의해서만 실행됩니다. 프로그램이 일부 C 코드 또는 uninterruptable sys 호출에 걸린다면 컨트롤은 man 인터프리터 루프로 돌아올 때까지 핸들러가 실행되지 않습니다. – gps

답변

1

파이썬 프로세스에서 Ctrl-C를 사용하면 종료됩니다. 나만의 exit 핸들러를 작성할 필요가 없으므로 직접 프로세스를 종료하고 sys.exit으로 전화 할 필요가 없습니다. 이것은 마치 문자 그대로 (over-kill) 같다.

+0

이 코드를 사용하여 종료 핸들러를 호출합니다. signal.signal (signal.SIGINT, exitHandler) .i 주석 코드 및 프로그램 실행 ... 나는 Ctrl + C 프로그램 충돌을 누릅니다. – AminM

+1

@JesonPark : Ctrl-C를 입력 할 때 파이썬이 종료 될 것이기 때문에 핸들러를 작성한 이유를 설명하십시오. 더 많은 도움이 필요하면이 경우 "크래시"에 대한 세부 정보를 제공해야합니다. –

+0

+1 "over-kill". 물론 그 권리 때문입니다. –

관련 문제