对于以下代码,可能的输出是ABBCE4E,ABs7E和ABCBs7E。我不确定为什么第一个没有7。当它向孩子发送中断信号时,不会" s"和" 7"被打印?第二,我不明白" s"和" 7"印刷但没有" C"。这是否意味着杀戮信号在它打印出来之前就已经传到了孩子身上?" C"?对于最后一个,我也不确定为什么在任何情况下都会打印4个。
void handler(int sig){
printf("s");
exit(7);
}
int forker(int x){
int pid,status;
signal(SIGINT, handler);
printf("A");
if(x > 0) {
pid = fork();
printf("B");
if(pid == 0) {
printf("C");
} else {
kill(pid,SIGINT);
waitpid(pid,&status,0);
printf("%d", WEXITSTATUS(status));
}
}
printf("E");
exit(4);
}