2012-01-12 5 views
3

다른 터미널에서 kill -SIGCONT pid을 실행 한 후에 다음 프로세스가 계속되지 않습니다.-SIGCONT가 일시 중지 된 프로세스를 계속 수행하지 않습니까?

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    printf("paused\n"); 
    pause(); 
    printf("continue\n"); 

    return 0; 
} 

신호를 보내고 "계속"을 인쇄 한 후에도 프로그램이 계속 진행될 것으로 예상됩니다. 어떻게 예상대로 작동하지 않습니까?

답변

3

pause()은 신호가 어느 처리를 종료 또는 신호 끄는 기능의 호출을 일으키는 전달 될 때까지 잠

원인 호출 프로세스 (또는 나사)에 기록된다.

그러나 SIGCONT은 이전에 SIGSTOP 또는 SIGTSTP에 의해 중지 된 프로세스 만 계속합니다.

그래서, 당신은 시도 할 수 있습니다 : 대신 또한 당신의 pause()

kill(getpid(), SIGSTOP); 

을, 당신은 sigsuspend()보고 할 수 있습니다.

관련 문제