"코드 목록 1"과 "코드 목록 2"간에 차이가 있습니까? 왜냐하면 코드 목록 1에서 자식 프로세스는 SIGTERM 신호를 잡아 당겨 멋지게 종료 할 수 있기 때문입니다. 그러나 코드 목록 2는 SIGTERM 신호에서 갑자기 종료됩니다. 나는 리눅스와 C포크 후 호출 신호
코드 목록 1
if (signal(SIGTERM, stopChild) == SIG_ERR) {
printf("Could not attach signal handler\n");
return EXIT_FAILURE;
}
pid = fork();
코드 목록이
pid = fork();
if (signal(SIGTERM, stopChild) == SIG_ERR) {
printf("Could not attach signal handler\n");
return EXIT_FAILURE;
}
을 사용하고
이상한 부분은 코드 목록 2에 그 입니다, 자식 프로세스와 부모 프로세스 모두 SIGTERM에 대한 신호 처리기를 설정합니다.. 그래서, 이것은 일하기로되어 있습니다. 그렇지 않니?
방금 테스트 해 보았지만 제대로 작동합니다. 두 경우 모두 stopChild() 호출을 통해 두 프로세스가 정상적으로 종료됩니다. –
스레드 내에서 fork()를 호출 할 가능성이 있습니까? –
동작을 보여주는 전체 예제 프로그램을 제공 할 수 있습니까? – wich