0

可能重复:
如何在 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

谢谢 :-)

4

2 回答 2

0

如果您想读取子进程的输出,那么(至少在 POSIX/UNIX/Linux 世界中)您应该真正考虑使用管道进行进程间通信。一个关于 Stackoverflow 的有用问题/答案以及指向一些好的资源的链接在这里:fork()、pipe() 和 exec() 进程创建和通信

于 2012-11-01T16:45:40.790 回答
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 替换为要从文件中读取的字节数。

于 2012-11-01T16:30:40.227 回答