#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<signal.h>
void catchsig(int sig)
{
int i=0;
do
{
pid_t ret=waitpid(-1,NULL,WNOHANG);
if(ret>0)
{
printf("proccess %d,catch a signal%d\n",getpid(),sig);
}
else
{
printf("catch child process fail\n");
break;
}
}while(1);
}
int main()
{
int i=0;
for(i;i<31;i++)
{
signal(i,catchsig);
}
pid_t id=fork();
if(id==0)
{
sleep(4);
printf("i am child\n");
exit(0);
}
else
{
int count=0;
while(count++<15)
{
sleep(1);
printf("do father thing\n");
}
}
}
1.非阻塞等待可以提高效率;
2,需要考虑同时等待多进程的情况;for;while 循环;