2013-05-12 3 views
1

은 내가 정리가 exit()와 함께 프로그램을 종료보다 kill('INT', $$)와 프로그램을 종료하는 것이 더 정확 할 수있는 Ctrl 키C 잡은 한 후에는?Ctrl + C를 잡은 후 종료하는 방법은 무엇입니까?

+0

왜 그런 생각을 했습니까? "더 정확한"이유는 무엇입니까? – innaM

+0

멀리까지 알다시피, Ctrl + C가 내가 잡히지 않았다면 그렇게했을 것입니다. –

답변

4

Ctrl 키 - C은 프로세스에 INT 신호를 전송한다.

perl -E'$SIG{INT}=sub{say "interrupted"; $c++ < 5 and kill INT => $$}; <>' 

재귀 gotos를 구현하는 특이한 방법이지만, ^C ^C ^C 아무리 프로그램을 종료하지 않습니다 : 그 처리 후 다른 INT 보내기 쓸모가 없다. (종료하려면 Enter 키를 누릅니다).

exit을 원할 경우 프로그램을 수행하십시오 (0이 아닌 상태가 바람직 함).


perlmod에서

관련 인용 :

END 코드 블록은 가능한 늦게 실행

, 즉, 펄이 프로그램을 실행을 완료하고 통역이 경우에도 종료되는 직전 후 die() 함수의 결과로 종료됩니다. 이 exec 통해 다른 프로그램으로 변신 것, 또는에 의해 물 밖으로 날려되지 않는 경우에 당신이 할 수있는 경우 (단, 신호 - 당신은() 자신이 함정에 있습니다.

즉 자기 방해 kill INT => $$이 실행되지 것입니다 END 기본적으로 이것은 "어려운 일을 가능하게"하는 철학에서 비롯된 것일 수 있습니다. 특정 종료 작업을 실행하는 데 시간이 오래 걸리지 않는 한 INT 또는 TERM 신호를 실행해야합니다. KILL

+0

'kill ('INT', $$)'전에 $ SIG {INT}를 다시 "DEFAULT"로 설정했을 것입니다. –

+1

@sid_com 그렇다면'END' 블록을 실행할 것인지 말 것인지를 결정해야합니다. 그렇지 않은 이유는 거의 없기 때문에 'exit'가 여전히 바람직합니다. – amon

관련 문제