用C语言,实现接收管道输出的结果,并显示

在shell里利用“|”管道干的事情就是io重定向,把“|”命令前的输出重定向到“|”后的标准输入中也就是c程序的stdin流中,所以要实现楼主所得功能程序只要跟原来的样就行了。例如
#include <stdio.h>

int main(void)
{
char string[512];
fgets(string ,512,stdin);
puts(string);
return 0;
}

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

example:



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

int main(void)
{
int len ;
int apipe[2] ;
int i ;
char buf[256] ;
if (pipe(apipe) == -1) {
perror("can not create a pipe/n") ;
exit(1) ;
}
while (fgets(buf , 256 , stdin)) {
len = strlen(buf) ;
if (write(apipe[1] , buf , len) != len) {
perror("writing to pipe") ;
break ;
}
for (i = 0 ; i < len ; i++)
buf[i] = '/0' ;
len = read(apipe[0] , buf , 256) ;
if (len == -1) {
perror("reading form pipe") ;
break ;
}
if (write(1 , buf , len) != len) {
perror("writing to stdout") ;
exit(1) ;
}
}
return 0 ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值