c++里的system()函数调用系统命令如何获取打印信息

ding525 2011-05-09 10:41:46
比如命令ls /opt/*.rpm | awk -F '[-|.]' '{print $3}'会输出1005这个结果。在c++代码中调用system("ls /opt/*.rpm | awk -F '[-|.]' '{print $3}'"),有没有办法获取1005这个值呢?
...全文
2978 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
i丹明扬 2013-03-02
  • 打赏
  • 举报
回复
感谢哈~~啊啊啊啊啊啊啊啊
FCARM 2012-02-20
  • 打赏
  • 举报
回复
收下,终于找到我想要的东西 了
shenyan008 2011-10-12
  • 打赏
  • 举报
回复
又见popen
sadever 2011-10-11
  • 打赏
  • 举报
回复
正好要用,就看到了,谢谢!!
fensnote 2011-09-28
  • 打赏
  • 举报
回复
重定向
once_and_again 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 challenge99 的回复:]

恭喜楼主自学成才
[/Quote]

恭喜楼主自学成才
沭水河畔 2011-09-24
  • 打赏
  • 举报
回复
嗯,apue那本书上有讲这个。
Dogofmikado 2011-09-24
  • 打赏
  • 举报
回复
谢谢楼主,正找你就送来了,太感谢了,呵呵
linuhuge 2011-05-10
  • 打赏
  • 举报
回复
要获取结果 一般popen 原理也是pipe
不过这个要再至少开两个进程,考虑到效率的时候要慎用
Arnold9009 2011-05-10
  • 打赏
  • 举报
回复
学习了~~~~~~~还真没用过的说。。。。。。。。。
yong_f 2011-05-09
  • 打赏
  • 举报
回复
可以把标准的输出重定向到一个文件,再读取文件就可以了
justkk 2011-05-09
  • 打赏
  • 举报
回复
嗯 popen(cmd, "r")
可以读取命令的输出信息
李亚超 2011-05-09
  • 打赏
  • 举报
回复
自己动手
challenge99 2011-05-09
  • 打赏
  • 举报
回复
恭喜楼主自学成才
ding525 2011-05-09
  • 打赏
  • 举报
回复
自己找到答案了。
http://www.linuxidc.com/Linux/2011-04/34092.htm

#include <stdio.h>
#include <string>

void executeCMD(const char *cmd, char *result)
{
char buf_ps[1024];
char ps[1024]={0};
FILE *ptr;
strcpy(ps, cmd);
if((ptr=popen(ps, "r"))!=NULL)
{
while(fgets(buf_ps, 1024, ptr)!=NULL)
{
strcat(result, buf_ps);
if(strlen(result)>1024)
break;
}
pclose(ptr);
ptr = NULL;
}
else
{
printf("popen %s error\n", ps);
}
}

int main()
{
char result[1024];
executeCMD( "ls /opt/*.rpm | awk -F '[-|.]' '{print $3}'", result);
printf("%s", result );
return 0;
}
xiangpengmeng 2011-05-09
  • 打赏
  • 举报
回复
学习了, 以前也一直在想用这种方式,只不过一直没用到, 也没进一步考虑, 呵呵, 留下了

23,222

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧