SIGINT 시그널을 처리하기 위해 생성 된 함수가 상수 루프에 갇혀 있습니다. 아이디어는 CTRL-C를 부모 프로세스가 무시하도록하지만 자식 프로세스로 보냄으로써 기본값으로 처리합니다. CTRL-C를 누르면 신호 처리기 함수가 호출되지만 무한 루프에 빠지게됩니다. kill 호출은 보낸 사람 프로세스를 제외한 프로세스 그룹의 모든 프로세스에 SIGTERM을 보내야합니다. 어떤 도움을 주시면 감사하겠습니다.시그널 핸들러 함수가 루핑을 계속합니다.
기능 코드는 다음과 같습니다
void intHandler(int signum) {
kill(0, SIGTERM);
} (주)에
함수 호출 코드는 다음과 같습니다 킬 (kill) 매뉴얼 페이지에서
(void) sigset(SIGINT, intHandler);
"보낸 사람 프로세스를 제외하고"- 사양에서 말하는 것은 아닙니다. SIGTERM을 차단하거나 프로세스 그룹에서 프로세스를 제거해야합니다. –
또는 전역에서 자식을 추적하고 모든 프로세스 대신 명시 적으로 자식을 "종료"합니다. IIRC에서는'sigaction'을 사용하여 부모가 SIGTERM을 무시하고 자식을 차단 해제 할 수 있습니다. –
나는 당신이 말한 것과 똑같이 일을 끝내었고 그것이 필요한만큼 정확하게 작동합니다. 고마워요. – zetatr