c语言标准输出重定向到管道,再问:如何将标准输出(stdout)的内容读取到文件里...

我想把一个程序运行过程中在终端输出的一些信息读取到一个文件里,然后进行一些处理,请问如何实现?

前两天问过这个问题,有人提供了用popen(const char* command,const char * type),可是应该用那一个command才能截获标准输出(stdout)的内容呢?请各位大侠不吝赐教,谢谢了

|

FILE *fp;

char buff[2000];

fp =popen ( "这里是你的执行程序", "r")

memset ( buff , 0 , sizeof(buff) );

while ( !feof(fp) )

{

fgets ( buff , 1000 , fp ) ; //读一行

puts ( buff );

...

}

明白了么?

|

重定向阿:

程序 >/tmp/msg.out

|

上面说错了,写了个测试程序:

#include

#include

#include

#include

#include

#include

#include

int main()

{

int fd, stdout_fd= fileno(stdout);

fd = open("xxxooo.txt", O_CREAT|O_RDWR, 0666);

close(stdout_fd);

dup2(fd, stdout_fd);

printf("hello, world.n");

close(fd);

return 0;

}

|

程序1

FILE  *ptr;

if ((ptr = popen("ps -ef", "r")) != NULL) {

while(fgets(buf, BUFSIZ, ptr) != NULL) {

...

msgsnd(...);  //将消息读取出来用msgq发送出去。

...

}

}

程序2

while(1){

msgrcv(...); //接收消息

...          //其他处理

}

给你提供个思路,具体实现你自己来解决吧

呵呵

|

运行这个程序的时候 io 重定向一下呗~ >>

|

再开个有名管道即可,不要再folk了

天地无极,乾坤借法

|

一个read,一个write ,没关系吧~~~ 或者,干脆,来个管道得了~

|

典型的管道。

|

管道的不需要一个一个的改了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值