#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<signal.h>
#include<wait.h>
void sigchld_handler(int sig)
{
pid_t pid;
int status;
for(;(pid=waitpid(-1,&status,WNOHANG))>0;) {
printf("child %d died:%d\n",pid,WEXITSTATUS(status));
printf("hi,parent process received SIGHLD signal successfully!\n");
}
return ;
}
void main()
{
int a;
a=fork();
if(a<0) {
printf("创建进程出错!\n");
exit(1);
}
else if(a==0) {
printf("child process' ID is %d\n",getpid());
sleep(3);
exit(1);
} else {
signal(SIGCHLD,sigchld_handler);
pause();
}
}
运行结果如下图所示:
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。