从 C/C 中的 system() 命令捕获 stdout
使用 system() 执行系统命令时,必须捕获其输出以进行进一步处理。 C/C 提供了多种方法来实现此目的,其中 popen() 函数成为可靠的解决方案。
popen() 函数
popen() 函数打开来自 shell 的管道,并通过执行指定的命令来启动进程。它返回一个流指针 FILE *连接到管道,启用读写操作。
语法和用法
popen() 的语法如下如下:
#include <stdio.h> FILE *popen(const char *command, const char *type);
其中:
要捕获系统命令的标准输出,请使用:
FILE *fp = popen(command, "r");
FILE *fp 表示连接到命令的标准输出的流。然后,您可以使用 fgetc()、fgets() 或其他流操作函数来读取输出。
示例
char buffer[BUFSIZ]; FILE *fp = popen("ls", "r"); while (fgets(buffer, BUFSIZ, fp) != NULL) { printf("%s", buffer); } pclose(fp);
关闭管道
读完输出后,必须关闭管道使用 pclose() 释放关联资源:
int status = pclose(fp);
注意: 使用 popen() 捕获 stdout 会继承外部命令遇到的任何错误。考虑检查 pclose() 的返回值以检测任何错误。
以上是如何从 C/C 中的 system() 命令捕获标准输出?的详细内容。更多信息请关注PHP中文网其他相关文章!