首页 > 系统服务 > 详细

现代进程间的通信方式--管道

时间:2017-03-06 11:25:14      阅读:222      评论:0      收藏:0      [点我收藏+]

管道(pipe)、命名管道(FIFO)、信号(signal)、消息队列、共享内存、信号量、套接字(socket)

--------------------------------------------------------------------------------------

#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

/*父进程通过管道传输两个数据给子进程
 *由子进程负责从管道中读取并输出
*/

int main()
{
    int fd[2]; //fd[0] fd[1]
    //创建管道
    if(pipe(fd)<0)
    {
        perror("pipe error");
        exit(1);
    }

    pid_t pid;
    if((pid = fork()) < 0)
    {
        perror("fork error");
        exit(1);
    }
    else if(pid >0)  //parent process
    {
          close(fd[0]);//父进程用来写入数据
          int start =1,end = 100;
          if(write(fd[1],&start,sizeof(int))!=sizeof(int))
          {
            perror("write error");
            exit(1);
          }
          if(write(fd[1],&end,sizeof(int))!=sizeof(int))
          {
            perror("write error");
            exit(1);
          }
          close(fd[1]);
          wait(0);         //等待子进程结束
          
    }
    else   //child process
    {
         close(fd[1]);//子进程用来读取数据
         int start,end;
         if(read(fd[0],&start,sizeof(int)) < 0)
         {
            perror("write error");
            exit(1);
         }
         if(read(fd[0],&end,sizeof(int)) < 0)
         {
            perror("write error");
            exit(1);
         }
         close(fd[0]);
         printf("child process read start:%d,end:%d\n",start,end);
    }
    exit(0);
}
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    


    
    
    
    
    
    
    
    
    
    
    
    
    
    

 

现代进程间的通信方式--管道

原文:http://www.cnblogs.com/lvdh1314/p/6508731.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!