管道重定向与进程间通信

先来看看下面的这张图:

当进行I/O重定向时,只是将不同进程表的不同fd指向同一文件表结构。

关于I/O重定向,要用到以下的重要函数:

int dup( int oldfd );
int dup2( int oldfd, int targetfd )

        利用函数dup,我们可以复制一个描述符。传给该函数一个既有的描述符,它就会返回一个新的描述符,这个新的描述符是传给它的描述符的拷贝,即他们将共享同一个文件表。

        而dup2,则会复制oldfd所指向的文件表结构到targetfd所指向的文件表结构,这样就使targetfd重定向到oldfd了,并且是指向oldfd所指的文件表结构的。

下面的程序就是利用管道及重定向来进行2个进程间的通信的。

在父进程中创建了2个子进程A、B,并在父进程中创建了管道A_to_B[2],

我们的任务是将进程A的输出做为进程B的输入

为此,首先在子进程A中将其标准输出重定向到管道的写端A_to_B[1],然后在子进程B中将管道的读端A_to_B[0]重定向到B的标准输入,如此即可。

下面是代码:

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值