阻塞型通信程序

#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 SIHHLD signal successfully!\n");  
    }  
    return;  
}  
 
void main()  
{  
    //pid_t pc,pr;  
    int pc=fork();  
    if(pc==0)  
    {  
        printf("子进程!\n");  
        sleep(1);  
        printf("This is child process with pid of %d\n", getpid());  
        //exit(1);  
    }  
    else if(pc>0)  
    {      
        signal(SIGCHLD,sigchld_handler);  
        pause();  
    }  
    else 
    {  
        printf("创建进程出错!\n");  
        exit(1);  
    }  
}  

 

posted @ 2014-08-10 10:03  商商-77  阅读(181)  评论(0编辑  收藏  举报