더 복잡한 신호와 분기 질문이 확실하지 않습니다. 자녀 또는 부모로부터의 신호 호출간에 차이가 있습니까?신호가있는 포크 사용 방법은 무엇입니까?
자식이 분기되면 부모가되었지만 이전 부모 만 자식입니까?
핸들러가 포함되어 있으므로 기본 핸들러가 유효하지 않습니다. 프로세스를 종료하지 않으려면 SIGINT
을 변경할 수 있습니까?
int count = 0;
void killhandler(int sig){
printf("SIGKILL received\n");
return;
}
void childhandler(int sig){
int status;
wait(&status);
count += WEXITSTATUS(status);
return;
}
main(){
int i; // for loop iterator
pid_t pid[3]; // pids of child processes
Signal(SIGKILL, killhandler);
Signal(SIGCHLD, childhandler);
// Fork 3 child processes
for(i=0; i<3; i++){
pid[i] = fork();
if(!pid[i]){ // If child process
Signal(SIGKILL, SIG_DFL);
exit(5);
}
}
// Parent process only
for(i=0; i<3; i++){
kill(pid[i], SIGKILL);
}
sleep(5);
printf("count = %d\n", count);
exit(0);
}
왜 "SIGKILL received"
이 인쇄되지 않습니까?