获取标准shell 命令的输出内容
cmdline.h
#include <iostream> #include <mutex>
class Cmdline {
private:
Cmdline() = default;
public:
~Cmdline() = default;
Cmdline(const Cmdline& cmd) = delete;
Cmdline& operator=(const Cmdline& cmd) = delete;
public:
static Cmdline& getInstance();
void executeCMD(const std::string& cmd, std::string& result);
private:
static std::mutex m_mutex;
};
cmdline.cpp
#include "cmdline.h"
#include "stdio.h"
std::mutex Cmdline::m_mutex;
Cmdline& Cmdline::getInstance()
{
std::lock_guard<std::mutex> lck(m_mutex);
static Cmdline instance;
return instance;
}
void Cmdline::executeCMD(const std::string& cmd, std::string& result)
{
char buf_ps[1024] = {0};
std::string temp_cmd = cmd + " 2>&1"; //标准错误重定向到标准输出
FILE* ptr = nullptr;
if((ptr = popen(temp_cmd.c_str(), "r")) != nullptr)
{
while(fgets(buf_ps, 1024, ptr) != nullptr)
{
result += buf_ps;
}
pclose(ptr);
ptr = nullptr;
}
else
{
std::cout << "popen %s error!!" << std::endl;
}
}
test.cpp
#include "cmdline.h"
int main(int argc, char* argv[])
{
if(argc != 2)
{
std::cout << "error number args" << std::endl;
return -1;
}
std::string strResult = "";
std::string cmd = argv[1];
Cmdline::getInstance().executeCMD(cmd, strResult);
std::cout << "result: " << strResult << std::endl;
return 0;
}
获取标准shell 命令的输出内容的更多相关文章
- 异步获取CMD命令行输出内容
		当控制台命令使用process.Start(); 后可以直接显示输出内容,当然它是异步显示的不用等程序结束.代码如下: using System;using System.Collections.Ge ... 
- Shell命令-文件及内容处理之grep(egrep)、join
		文件及内容处理 - grep(egrep).join 1. grep(egrep):文本过滤工具 grep(egrep)命令的功能说明 grep命令是Linux系统中最重要的命令之一,其功能是从文本文 ... 
- Shell命令-文件及内容处理之sort、uniq
		文件及内容处理 - sort.unip 1. sort:对文件的文本内容排序 sort命令的功能说明 sort 命令用于将文本文件内容加以排序.sort 可针对文本文件的内容,以行为单位来排序. so ... 
- Shell命令-文件及内容处理之head、tail
		文件及内容处理 - head.tail 1. head:显示文件内容头部 head命令的功能说明 head 命令用于显示文件头部内容,默认执行 head 命令会输出文件开头的 10 行. head命令 ... 
- Linux下Shell命令的输出信息同时显示在屏幕和保存到日志文件中
		#直接覆盖日志文件 ls -l | tee ./t.log #将输出内容附加到日志文件 ls -l | tee -a ./t.log 使用的是tee命令 
- linux重定向总结:如何将shell命令的输出信息自动输出到文件中保存
		在做批量实验室,例如跑批量MR的作业,我们会写好shell脚本,然后启动脚本,等所有作业执行完再去看结果,但是这些执行时的信息如何保存下来到文件中呢?下面这个命令可以完成这个任务. sh batchj ... 
- Shell命令-文件及内容处理之more、less
		文件及内容处理 - more.less 1. more:分页显示文件内容 more命令的功能说明 more 命令类似 cat,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白 ... 
- Shell命令-文件及内容处理之wc,tr
		文件及内容处理 - wc.tr 1. wc:统计文件的行数.单词数或字节数 wc命令的功能说明 wc 命令用于计算字数.利用 wc 指令我们可以计算文件的字节数,字数,或是列数,若不指定文件名称,或是 ... 
- Shell命令-文件及内容处理之cat、tac
		文件及内容处理 - cat.tac 1. cat:显示文件内容 cat命令的功能说明 cat命令用于连接多个文件并且打印到屏幕输出或重定向到指定文件中 cat命令的语法格式 cat [OPTION]. ... 
随机推荐
- go  [第一篇]初识
			[第一篇] 简介 Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发 ... 
- [转] xgboost
			还是不太明白,先mark一下 https://blog.csdn.net/v_july_v/article/details/81410574 
- ubuntu 配置apt-get源
			ubantu安装软件速度慢一般是因为系统默认选择的源导致,可以通过手动配置源设置解决. 1. 原文件备份 sudo mv /etc/apt/sources.list /etc/apt/sources. ... 
- js前台计算两个日期的间隔时间(时间差)
			在后台传来两个时间字段,从中解析出两个字符串类型的日期格式 需要在前台解析出两个时间的间隔 这里采用获取两个日期的时间戳进行计算 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时 ... 
- idea工具maven生命周期clean,compile,install,package区别
			idea工具maven projects里面有9种生命周期,今天刚好遇到,顺便分享下自己的理解.生命周期是包含在一个项目构建中的一系列有序的阶段.最常用的两种打包方法:一:clean,package( ... 
- app个推(透传消息)
- git 服务器 LINUX端的使用
			首先,需要建立一个git服务器----- 这里介绍如何使用git这个服务器 我们在github上下载一份代码,里面有如下内容 我们使用git服务器的时候不能有.git 文件,所以在此将其删除 ys-l ... 
- 非递归并查集——zoj4109
			卡常卡的我难受 非递归并查集好像写起来常数小一点 int F[maxn]; int Find(int x){ int r = x; while (F[r] != r)r = F[r]; int i = ... 
- iOS开发之获取文件的md5值
			我们经常有下载文件上的需求 为了安全我们经常需要对文件进行md5校验 那我就来给大家分享一个很方便的获取文件md5值得方法. 首先需要引用系统库文件 #include <CommonCrypto ... 
- java的this关键字理解
			1.java提供了一个this关键字,this关键字总是指向调用该方法的对象.根据this出现位置的不同,this作为对象的默认引用有两种情形.a).构造器中引用该构造器正在初始化的对象.(this总 ... 
