进程间的通信方式之管道通信

一、管道通信的特点

1. 管道是单向的,先进先出的。

2.一个进程在管道尾部写入数据,另一个进程在管道头部读取数据。因此管道通信是半双工的。

3. 管道提供了简单的流控制机制,当进程试图读空管道时,进程将阻塞。当管道已经写满时,进程再试图向管道写入数据,进程将阻塞。

4.数据被进程读出,将从管道中删除

二、管道通信的区别

1、有名管道

2、无名管道

三、两种管道通信的区别

1、有名管道:同一系统中任意两个进程间的通信

2、无名管道:用于父子进程之间

四、创建无名管道 -- pipe

       函数原型:int pipe(int filedes[2]);

       函数参数:filedes[2]为两个新建的文件描述符,其中fd[0]表示管道读取端,fd[1]用于管道写入端。

       头文件: #include <unistd.h>

       返回值:成功返回0,失败返回-1。

       例:

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #include <stdio.h>    
  2. #include <unistd.h>    
  3. #include <sys/types.h>    
  4. #include <string.h>    
  5. #include <errno.h>    
  6. #include <stdlib.h>    
  7. #include <sys/wait.h>    
  8.     
  9. int main()    
  10. {    
  11.     int pipe_fd[2];    
  12.     pid_t pid;    
  13.     char r_buf[100];    
  14.         
  15.     int r_num;       
  16.     memset(r_buf,0,sizeof(r_buf));    
  17.         
  18.     if(pipe(pipe_fd) < 0)    
  19.     {    
  20.         printf("pipe creat error\n");    
  21.         return 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值