#include<stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#include <wait.h>
void sighandler_t(int nu)
{
pid_t pid;
pid = wait(NULL);
printf("child process exit, pid:%x\n",pid);
}
int main()
{
pid_t pid;
signal(SIGCHLD, sighandler_t);
if((pid= fork())<0){
perror("fork err");
}else if(pid == 0){
printf("I am child1,myPid:%x\n",getpid());
sleep(1);
_exit(0);
}
if((pid= fork())<0){
perror("fork err");
}else if(pid == 0){
printf("I am child2,myPid:%x\n",getpid());
sleep(2);
_exit(0);
}
while(1){
printf("parent:%x\n",getpid());
sleep(2);
}
exit(0);
}
本文通过C代码示例介绍了如何使用SIGCHLD信号处理子进程退出,包括信号注册、子进程创建、等待子进程退出及父进程处理流程。代码中详细展示了如何在父进程中捕获并响应子进程的退出事件。
进程&spm=1001.2101.3001.5002&articleId=107023217&d=1&t=3&u=95ab96c20e3b429b95e21f0ac18021a0)
500

被折叠的 条评论
为什么被折叠?



