C++|Linux工作笔记-C++获取Linux中shell命令结果
发布日期:2021-06-30 10:40:57
浏览次数:2
分类:技术文章
本文共 2195 字,大约阅读时间需要 7 分钟。
目录
基本概念
这里首先介绍一条Linux函数:
ps -ef | awk '{print $2,$8,$9,$10}'
这个可以当前Linux系统运行的进程
另外一个知识点:
在Linux中一般使用这种方式获取shell命令的结果:
FILE *fp;fp = popen("ps -ef | awk {'print $2,$8,$9,$10'}", "r");if(!fp){ cout << "popen failed" << endl; return 0;}
popen函数类似Windows中的system
popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程。
最后一个知识点是std中的string字符串分割。
typedef vectorStringList;StringList splitstr(string &str, char tag){ StringList retVec; string subStr; for(size_t i = 0; i < str.length(); i++){ if(tag == str[i]){ if(!subStr.empty()){ retVec.push_back(subStr); subStr.clear(); } } else{ subStr.push_back(str[i]); } } if(!subStr.empty()){ retVec.push_back(subStr); } return retVec;}
代码与实例
程序运行截图如下:
源码如下:
#include#include #include #include using namespace std;typedef vector StringList;StringList splitstr(string &str, char tag){ StringList retVec; string subStr; for(size_t i = 0; i < str.length(); i++){ if(tag == str[i]){ if(!subStr.empty()){ retVec.push_back(subStr); subStr.clear(); } } else{ subStr.push_back(str[i]); } } if(!subStr.empty()){ retVec.push_back(subStr); } return retVec;}int main(int argc, char *argv[]){ FILE *fp; fp = popen("ps -ef | awk {'print $2,$8,$9,$10'}", "r"); if(!fp){ cout << "popen failed" << endl; return 0; } while(!feof(fp)){ char buffer[1024]; fgets(buffer, 1024, fp); string bufferStr = buffer; StringList list = splitstr(bufferStr, ' '); cout << "PID: " << list.at(0) << " name: " << list.at(1) << endl; } return 0;}
转载地址:https://it1995.blog.csdn.net/article/details/103438464 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月19日 05时11分12秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
构建一个较为复杂的 RESTful API
2019-04-30
Restful API定义
2019-04-30
Java的Executor框架和线程池实现原理
2019-04-30
自旋锁
2019-04-30
NUMA与SMP CLH算法
2019-04-30
CLH算法实现 代码正确版本
2019-04-30
排队自旋锁
2019-04-30
java各种锁
2019-04-30
清晰理解红黑树的演变
2019-04-30
红黑树插入删除
2019-04-30
红黑树代码
2019-04-30
cmd
2019-04-30
redis安装
2019-04-30
Mysql常见的存储引擎及比较
2019-04-30
android Context家族及详解
2019-04-30
android CrashHandler处理异常
2019-04-30
android 问题小记
2019-04-30
android productFlavors多马甲打包
2019-04-30
android 搭建本地maven库
2019-04-30
android mac搭建Nexus3.+私有maven
2019-04-30