获取标准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]. ...
随机推荐
- tomcat去掉ContextPath
众所周知,项目打成war包直接放到webapps下启动tomcat后访问项目需要带上ContextPath,也就是war包的文件名,需要去除掉这玩意最简单的办法是将war包重命名为ROOT.war,为 ...
- iOS 集成百度地图 位置偏移问题
iOS 集成百度SDK 请参考 百度地图官方文档 ,这里不就多啰嗦了 本文介绍的是在百度地图上根据经纬度,自定义气泡时,气泡位置的偏移,在我们天朝这种事是很常见的,也见怪不怪了,在项目中使用的百度地图 ...
- Maven - 镜像<mirror>
使用镜像如果你的地理位置附近有一个速度更快的central镜像,或者你想覆盖central仓库配置,或者你想为所有POM使用唯一的一个远程仓库(这个远程仓库代理的所有必要的其它仓库),你可以使用set ...
- 使用SpringSecurity体验OAUTH2之一 (入门1)
OAUTH2是一种安全的授权框架,其原理在网上有许多文章上可以看到.但从实践角度,好的文章比较少.SpringSecurity框架本身是支持OAUTH2的,所以下面通过使用SpringSecurity ...
- 【转】监听器(Listener)学习
一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其它对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监听的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通 ...
- Java后端学习,推荐书籍和学习路线
最近在学习Java和全栈开发,推荐一些有用的书籍 书架主要针对Java后端和全栈开发用的 书籍介绍 <Spring Boot 2.0企业级应用开发实战> 本书深入浅岀地讲解了 Spring ...
- 十 LVS 负载均衡
回顾nginx 反向代理负载均衡 负载均衡的妙用 负载均衡(Load Balance)集群提供了一种廉价.有效.透明的方法, 来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据处理能力. 提 ...
- layUI弹出框提示
简单介绍:项目使用layUI框架好久了,也没来的及写一篇关于layUI弹出层的随笔.现在补上.经常用到的,一般都是在ajax成功回调函数后边写. //js代码 s和fail 是ajax返回的数据lay ...
- PADS Router VX.2.3 设置光标的类型
操作系统:Windows 10 x64 工具:PADS Router VX.2.3 菜单:Tools > Options...(快捷键:Ctrl + <Enter>) 在Option ...
- auth组件
Django auth认证组件 简介 ''' Django auth认证组件提供了用户表的构建方式,认证接口,会话登录与注销接口. 中间件将会话登录用户保存到request对象中,这样不用从会话中获取 ...