typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;
void handler(int signal){
if(signal == SIGCHLD){
wait(0);
}
}
int main(int argc, const char *argv[])
{
pid_t pid=fork();
if(pid>0){
signal(SIGCHLD,handler);
}else{
exit(0);
}
return 0;
}
int i=0;
void handler(int signum){
if(signum==SIGCHLD){
i++;
printf("i=%d\n",i);
while(1){
pid_t pid = waitpid(-1,0,WNOHANG);
if(pid==-1){return;}
}
}
}int main(int argc, const char *argv[])
{
signal(SIGCHLD,handler);
for(int i=0;i<500;i++){
pid_t pid = fork();
if(pid==0){
exit(0);
}
}
while(1){
printf("1\n");
sleep(1);
}
return 0;
}
typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;
void handler(int sigum)
{
exit(0);
}
int main(int argc, const char *argv[])
{
pid_t pid =fork();
if(pid>0){
printf( "I am the father process\n");
signal(SIGINT,handler);
signal(SIGTSTP,SIG_IGN);
wait(NULL);
}else{
printf("I am the child process\n");
signal(SIGINT,handler);
signal(SIGTSTP,SIG_IGN);
}
while(1);
return 0;
}