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

capture buffer output from a c++ system() command

本文关键字:缓冲区 输出 命令 c++system 捕获      更新时间:2023-10-16

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

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

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

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

然后像文件一样从中读取。

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

来自手册页:

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

只需使用shell重定向功能将命令的输出转储到文件中即可:

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

以上将在output.txt中发送标准输出,并在error.txt.

中发送错误输出