将进程的输出写入缓冲区

时间:2012-11-01 16:24:25

标签: c++ linux

  

可能重复:
  How to execute a command and get output of command within C++?

在我的c ++程序中,我正在使用execv / system运行外部程序。

我想将程序的输出重定向到我程序中的缓冲区,即:

char* buff[some size large enough for any possible output];
system(some program);
//THE PROGRAM I JUST RAN IS A SPECIAL BLACK BOX PROGRAM THAT RUNS
//AND PARSE AN HTTP DUMP FILE AND PRINTS IT TO THE SCREEN WHEN RUNNING
//I WANT THE OUTPUT TO GO A BUFFER IN MY PROGRAM.
//THE IDEA IS TO HAVE THE DATA OF THE OUTPUT ON THE BUFFER RATHER THAN ON A FILE

//have the buffer filled with the output of the program

谢谢: - )

2 个答案:

答案 0 :(得分:0)

我不确定是否还有其他方法可以做到这一点,但这就是我想到的

char* buff[some size large enough for any possible output];
system(some program >somefile.txt);  

//have the buffer filled with the output of the program
// And redirect it into a file


//Do initial validity checks and open the file



read(somefile.txt,buff,bufflen);
//Read the file

unlink somefile.txt 
//Unlink if the file is not needed

将bufflen替换为您要从文件中读取的字节数。

答案 1 :(得分:0)

如果您想读取子流程的输出(至少在POSIX / UNIX / Linux世界中),您应该真正考虑使用管道进行进程间通信。 Stackoverflow上有一个有用的问题/答案,其中包含指向一些好资源的链接:fork(), pipe() and exec() process creation and communication