在C++中,你可以使用popen()
函數來創建一個管道并執行CMD命令
#include<iostream>
#include <fstream>
#include<string>
int main() {
// 要執行的CMD命令
std::string cmd = "dir";
// 打開管道并執行命令
FILE* pipe = popen(cmd.c_str(), "r");
if (!pipe) {
std::cerr << "Failed to execute command."<< std::endl;
return 1;
}
// 讀取命令輸出
char buffer[128];
std::string result;
while (fgets(buffer, sizeof(buffer), pipe)) {
result += buffer;
}
// 關閉管道
pclose(pipe);
// 輸出結果
std::cout << "Command output: "<< std::endl<< result<< std::endl;
return 0;
}
這個示例將執行dir
命令(列出當前目錄下的文件和文件夾),然后將輸出讀取到result
字符串中。請注意,這個示例僅適用于Unix系統(如Linux和macOS)。在Windows上,你需要使用_popen()
函數代替popen()
。
對于Windows系統,請包含<stdio.h>
頭文件,并將popen()
替換為_popen()
,將pclose()
替換為_pclose()
。這是一個適用于Windows的示例:
#include<iostream>
#include <fstream>
#include<string>
#include<stdio.h>
int main() {
// 要執行的CMD命令
std::string cmd = "dir";
// 打開管道并執行命令
FILE* pipe = _popen(cmd.c_str(), "r");
if (!pipe) {
std::cerr << "Failed to execute command."<< std::endl;
return 1;
}
// 讀取命令輸出
char buffer[128];
std::string result;
while (fgets(buffer, sizeof(buffer), pipe)) {
result += buffer;
}
// 關閉管道
_pclose(pipe);
// 輸出結果
std::cout << "Command output: "<< std::endl<< result<< std::endl;
return 0;
}
這個示例將在Windows上執行相同的操作。