2016-10-13 8 views
1

나는 종단 신호를 잡는 프로그램을 가지고 있습니다. 현재 수행 할 작업은 모두 Ctrl + C입니다. Ctrl + C 외에도 Ctrl + ZCtrl + \을 붙잡고 싶습니다. 여기 내 코드의 일부입니다. 프로그램을 멈추게 할 모든 신호를 잡으십시오.

if (signal(SIGINT, SIG_IGN) == SIG_ERR) 
    fprintf(stderr,"Error: Can't catch SIGINT\n"); 

if (signal(SIGTERM, SIG_IGN) == SIG_ERR) 
    fprintf(stderr,"Error: Can't catch SIGTERM\n"); 

// do stuff 

내가 Ctrl + ZCtrl 키 + \을 잡기 위해 구현해야 다른 어떤 신호? 그리고 무엇이 SIGTERM을 발생시킬까요? 미리 감사드립니다.

+2

IIRC, Ctrl + Z는 SIGTSTP를 발생시키고 Ctrl + \는 SIGQUIT를 발생시킵니다. – immibis

+4

SIGKILL 또는 SIGSTOP을 잡을 수 없습니다. –

+0

@immibis 만약 당신이 대답에 그것을 넣으면 받아 들일 것입니다. 그것은 완벽하게 작동합니다 –

답변

2

Ctrl + Z SIGTSTP를 발생시킵니다. Ctrl + \는 SIGQUIT를 발생시킵니다.

SIGTERM을 발생시키는 키 조합을 모르지만, kill -TERM <pid>을 사용하여 프로세스 ID로 <pid>을 대체하여 보낼 수 있습니다. (또는 kill <pid>; kill의 기본 신호는 SIGTERM입니다.)

SIGSTOP이나 SIGKILL을 잡지 못합니다.

+2

'SIGTERM'은 명시 적으로 지정하지 않을 때 kill이 보내는 기본 신호입니다. 시스템이 종료 할 때 일반적으로 사용하는 "요청 종료"신호입니다. 예를 들어, 프로세스가 종료 될 필요가있는 다른 문제 또는 종료되었습니다. –