好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
如何使用POSIX在C++中执行命令并获取命令的输出(就是用C++执行系统命令)? 关闭 返回上一级  

如何使用POSIX在C++中执行命令并获取命令的输出(就是用C++执行系统命令)?
+ 查看更多

发布日期:2018-02-26 15:56
分类:CPlusPlus
浏览次数:161
我正在找一种方法当它在C++程序中运行时来获取命令的输出(就是用C++执行系统命令)。 我已经尝试过使用system()函数,但它只是执行一个命令。 这里是我找的例子:
std :: string result = system(“./some_command”);
我需要运行一个任意命令,并得到它的输出。 我看过Boost.org,但我没有找到我想要的东西。
回答:
#include 
#include 
#include 
#include 
#include 
#include 

std::string exec(const char* cmd) {
    std::array buffer;
    std::string result;
    std::shared_ptr pipe(popen(cmd, "r"), pclose);
    if (!pipe) throw std::runtime_error("popen() failed!");
    while (!feof(pipe.get())) {
        if (fgets(buffer.data(), 128, pipe.get()) != NULL)
            result += buffer.data();
    }
    return result;
}
Pre-C++11 version:

#include 
#include 
#include 
#include 

std::string exec(const char* cmd) {
    char buffer[128];
    std::string result = "";
    FILE* pipe = popen(cmd, "r");
    if (!pipe) throw std::runtime_error("popen() failed!");
    try {
        while (!feof(pipe)) {
            if (fgets(buffer, 128, pipe) != NULL)
                result += buffer;
        }
    } catch (...) {
        pclose(pipe);
        throw;
    }
    pclose(pipe);
    return result;
}
在Windows平台下用_popen和_pclose替换popen和pclose。
上一篇float和double的区别
在C ++中初始化静态std :: map 下一篇
下一篇在C ++中初始化静态std :: map

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号