Linux中进程通讯--无名管道

上一篇更博是有名管道,今天我们来看看无名管道。

无名管道:相对于有名管道而言的,无名管道在使用时产生,不使用后释放。并不会在系统上留下任何蛛丝马迹。无名管道因其使用前没有任何的标识,所以它只能应用于父子进程之间。因为父子进程会复制父进程的文件表数组。(浅拷贝)

无名管道的操作:

1、创建     int  pipe(int  fd[2]);//fd[o]表示读数据  fd[1表示写数据]

2、打开     和创建一样,创建的同时就打开

3、读数据  read(fd[0],buff,size);

4、写数据  write(fd[1],buff,len);

5、关闭      close(fd[1]);close(fd[2]);

注意::管道都是半双工通讯,而无名管道创建后,父进程在fork产生子进程后,两个进程分别有一对读写,所以,要在父子进程分别关闭读或写(如果需要读就关闭写,需要写就关闭读)

下面我们来看一个例子:

父进程循环读入用户输入以end结束并写入管道,子进程从管道中获取并且统计字符个数。



此程序中,父进程负责写入,子进程负责读取,所以父进程关闭读(close fd[o]),子进程关闭写(close fd[1])

执行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值