在C++中,你可以使用popen()
和pclose()
函数来重定向exec()
函数的输出
#include <iostream>
#include <cstdio>
#include <unistd.h>
#include <sys/wait.h>
int main() {
// 打开一个文件用于存储输出结果
FILE *fp = popen("your_command_here", "r");
if (fp == nullptr) {
std::cerr << "Failed to run command" << std::endl;
return 1;
}
// 从文件指针中读取输出结果
char buffer[128];
while (fgets(buffer, sizeof(buffer), fp) != nullptr) {
std::cout << buffer;
}
// 关闭文件指针并等待命令执行完成
pclose(fp);
int status = WEXITSTATUS(waitpid(0, nullptr, 0));
if (status != 0) {
std::cerr << "Command exited with status " << status << std::endl;
}
return 0;
}
在这个示例中,你需要将"your_command_here"
替换为你想要执行的命令。popen()
函数会创建一个管道,将命令的输出重定向到文件指针fp
。然后你可以使用fgets()
函数从文件指针中读取输出结果,并将其打印到标准输出。最后,使用pclose()
函数关闭文件指针,并使用waitpid()
函数等待命令执行完成。