进程通信之管道通信

1》无名管道
    无名管道只能用于父进程与子进程间通信,由pipe函数建立管道。语法如下。
    #include<unistd.h>
    int pipe_f[2];                储存文件描述符
    int pipe(pipe_f);            创建管道

    管道即类似临时文件,描述符存储在pipe_f二元数组内。其中pipe_f[0]为读管道,pipe_f[1]为写管道。从管道中读写数据可用文件操作函数。

    类似文件中,close函数可关闭管道。

   另外,需要注意,使用此管道通信时应在调用fork之前创建。

2》命名管道
    命名管道可以应用于任意两个进程之间
    int mkfifo(char *pathname,mode_t mode);    
pathname为文件路径,mode_t为文件模式符,参见文件操作。使用此函数实际上即创建了,pathname路径中的文件。在头文件“sys/types.h”与"sys/stat.h"中。
此外,还有mode还有一个参数需要注意,见图:



由以上可见管道实际上就是一种特殊的文件,对管道操作时也即使用与文件操作相同的
方法,如write、read等等。但是需要注意的是,管道特殊之处在于,在对管道读操作的时候,会将
读过的内容删除,这也符合了管道的这个名称。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值