该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
pid_t pidArray[10];
void myhandler(int num,siginfo_t *st,void *p)
{
printf("recv num:%d,data = %d\n",num,st->si_value.sival_int);
}
void main()
{
int i;
struct sigaction act;
act.sa_sigaction = myhandler;
act.sa_flags = SA_SIGINFO;
if(sigaction(SIGRTMIN+1,&act,NULL) == -1)
{
perror("func sigaction err:");
return -2;
}
if(sigaction(SIGRTMIN+2,&act,NULL) == -1)
{
perror("func sigaction err:");
return -2;
}
if(sigaction(SIGRTMIN+3,&act,NULL) == -1)
{
perror("func sigaction err:");
return -2;
}
int pid = 0;
for(i=0;i<2;i++)
{
pidArray[i] = pid = fork();
if(pid == 0)
{
break;
}
}
if(pid > 0)
{
printf("parents running\n");
exit(0);
}
if(pid == 0 && i == 0)
{
printf("child1 running\n");
exit(0);
}
if(pid == 0 && i == 1)
{
printf("child2 running\n");
exit(0);
}
int mypid;
while(mypid = waitpid(-1,NULL,WNOHANG) > 0)
{
printf("child exit pid:%d \n",mypid);
}
}