我想把一个程序运行过程中在终端输出的一些信息读取到一个文件里,然后进行一些处理,请问如何实现?
前两天问过这个问题,有人提供了用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 ,没关系吧~~~ 或者,干脆,来个管道得了~
|
典型的管道。
|
管道的不需要一个一个的改了。