如何在c++中使用管道技术执行cmd命令

avatar
作者
猴君
阅读量:0

在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上执行相同的操作。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!