私はこの質問で可能なすべての出力を見つけるように求められます:
#define N 4
int val = 9;
void handler(sig) {
val += 3;
return;
}
int main() {
pid_t pid;
int i;
signal(SIGCHLD,handler);
for (i=0;i<N;i++) {
if ((pid =fork()) == 0) {
val -= 3;
exit(0);
}
}
for (i=0;i<N;i++) {
waitpid(-1,NULL,0);
}
printf("val = %d\n",val);
}
ラインシグナル(SIGCHLD、ハンドラー)が何をするのかわかりません。私は次のものだけを見つけました:
SIGABRT - abnormal termination.
SIGFPE - floating point exception.
SIGILL - invalid instruction.
SIGINT - interactive attention request sent to the program.
SIGSEGV - invalid memory access.
SIGTERM - termination request sent to the program.
SIGCHLDは何をしますか?この質問のforループについても説明できますか?
このコードをコンパイルして実行するには、どのようなライブラリが必要ですか?