Linux中用C++通过管道来获取命令行输出的内容
来源:互联网 发布:淘宝男包店铺排行 编辑:程序博客网 时间:2024/05/05 06:41
Linux中用C++通过管道来获取命令行输出的内容
转载请说明出处:http://blog.csdn.net/cywosp/article/details/8980898
使用C++时,有些时候我们可以通过管道的方法来获取所执行的命令所输出的内容。具体做法如下:
首先你需要确定你所执行的命令所输出的内容的格式(不同的操作系统相同的命令所输出来的内容格式可能会不一致)。我们来举例说明:我想获取/var目录当前所暂用的存储空间,以KB为单位输出:
[root@localhost /]# du -sk /var
13532132 var
[root@localhost /]# du -sk /var | awk -F ' ' '{print $1}'
13532132
从上面输出可以知道/var目录当前暂用了13532132KB,那么我们如何将改值使用到我们的程序中呢?为了简单起见我实现了如下函数:
int64_t CalculateDirUsedCapacity (const std::string& directoryName){ FILE *fstream = NULL; char buff[32]; memset (buff ,'\0', sizeof(buff)); std::string cmd = "du -sk " + directoryName; cmd += "| awk -F ' ' '{print $1}'"; // 通过管道来回去系统命令返回的值 if(NULL == (fstream = popen (cmd.c_str (), "r"))) { return 0; } if(NULL == fgets (buff, sizeof(buff), fstream)) { pclose(fstream); return 0; } std::strstream ss; ss << buff; int64_t usedCapacity = 0; ss >> usedCapacity; pclose(fstream); // close pipe return usedCapacity;}
- Linux中用C++通过管道来获取命令行输出的内容
- 【c/c++】如何调用【linux】shell命令行命令并获取命令行的输出内容
- 急救!CreateProcess后,通过管道获取命令行输出不完整
- 【c/c++】如何调用【Window】cmd命令行命令并获取命令行的输出内容
- C#获取命令行输出内容的方法
- C#获取命令行输出内容的方法
- 通过管道获取cmd输出
- LINUX C获取命令行输出结果
- python使用管道获取其它进程的输出内容
- python使用管道获取其它进程的输出内容
- C#获取命令行输出内容
- C通过管道获取LINUX进程内存占用情况
- C#获取命令行输出内容的方法简介
- 通过管道方式(CreatePipe)获取DOS命令行执行后的返回结果
- 通过重定向来获取log4j的控制台输出
- 通过GRUB命令行来启动Linux操作系统
- 获取命令行程序的输出
- 通过命令行来上传一些上传不到github上面的内容
- ireport detail 与 column footer 间距紧凑
- [LeetCode]Maximum Subarray
- Linux + SVN + Apache 安装与整合
- 事半功倍:你应该知道的HTML5五大特性
- [LeetCode]Median of Two Sorted Arrays
- Linux中用C++通过管道来获取命令行输出的内容
- android4.0打包烧录下载
- Ext JS百强应用:谈谈json 与 jsonp 的区别 --第1强
- SSE2指令--使用SSE2的整型指令:逻辑操作指令
- VS2008配置文件
- [LeetCode]Merge Intervals
- Protocol Buffers 简介及用法
- Web开发者不容错过的20段CSS代码
- 内存对齐的初步讲解--linux和windows平台下内存分配的差异