从c ++ system()命令捕获缓冲区输出

时间:2014-10-31 06:48:19

标签: c++ system cout

如何捕获我在命令行运行的php脚本的输出并将其存储到c ++中的数组? 即。

system('php api/getSome.php');

3 个答案:

答案 0 :(得分:1)

system无法为您的计划提供输出。您应该将命令输出重定向到文件,例如在php api/getSome.php > somefile中,并从程序中读取此文件,或者您应该使用可以为您提供命令输出的正确函数,如popen

答案 1 :(得分:1)

来自手册页:

  

system()通过调用/ bin / sh -c命令执行命令中指定的命令。

只需使用shell重定向工具将命令的输出转储到文件中:

 system("php api/getSome.php > output.txt 2> error.txt");

以上内容将发送 output.txt 中的标准输出和 error.txt 中的错误输出。

答案 2 :(得分:1)

传统上,当您需要在父进程和子进程之间进行IO时,首选popen()。它使用基于C的FILE流。它是同一个低级内在函数的包装器,也构成了system(),即fork + execl,但与system()不同,popen()打开一个管道并将stdin / out复制到一个流中进行读写。

FILE *p = popen("ping www.google.com", "r");

然后从文件中读取。