在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()函數等待命令執行完成。