捕获c++system()命令的缓冲区输出
capture buffer output from a c++ system() command
如何捕获在命令行运行的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.
相关文章:
- OpenCL 代码卡在写入输出缓冲区上
- 来自无符号字符缓冲区的虚拟输出
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 将数据分配给了数组分配,但程序显示了以缓冲区超支的输出
- 输出操纵器 std::ends 是否向输出缓冲区添加空字符?
- 多线程使用者未产生与使用升压环形缓冲区的输入相同的输出
- 音频缓冲区列表,用于输出流格式已压缩的 AUHAL 单元
- 将值输出到不同大小的缓冲区
- 为什么我要获得不同的输出?我使用有界的缓冲区,pthreads和Semaphores对C 进行编码
- CGI程序的自定义输出缓冲区,运算符重载
- 输出缓冲区无法刷新的情况?
- 一个缓冲区如何用新行C++输出
- std::字符串流,直接输出缓冲区/字符串结果访问,避免复制
- 有关C 输出缓冲区压缩的视觉效果
- 输出缓冲区和Cntrl+C以退出程序
- C/C++文件输出缓冲/缓冲区切换到操作系统
- Win32 读取文件输出,无需等待缓冲区
- 何时刷新输出缓冲区
- 捕获c++system()命令的缓冲区输出
- 为什么我的缓冲区输出被截断了?c++套接字编程