C++获取CMD命令输出的字符

上周在做西山居笔试题的时候,最后一题问到:获取本机与www.baidu.com之间的延迟并保存到文件中,题目要求用伪代码作答,不过我没接触过伪代码,直接写上了中文步骤, 所以估计是凉了。。。
在C++中 调用CMD命令使用system函数,比如要获得与百度网址的延迟,代码如下

system("ping www.baidu.com");   //将在屏幕上输出

输出之后该怎么获取输出的字符呢?
答案是使用popen()函数

FILE *popen (const char * command , const char * type); //函数原型

popen()函数的作用是创建一个管道,system命令执行后只会在屏幕输出结果,想要获取数据,得用popen()打开一个管道,返回一个FILE*类型,并用fgets获取输出,由于popen()是linux下的一个函数,所以在windows下要使用_popen();
使用方法如下

FILE *file;
char ptr[1024] = {0};
char cmd[1024] = {0};
strcat(ptr, "ping www.baidu.com");  

if ((file = _popen(ptr, "r")) != NULL)
{
    while (fgets(cmd, 1024, file) != NULL){    //ping命令的最后一行才是获取平均值,所以只需要最后一行的字符串
    }
    _pclose(file);
}
int len = strlen(cmd);  //获取字符串长度,只输出平均 = xxms, 这里用了比较笨的方法,可以用其他方法来获取ping的平均值
cout << (cmd+(len-12));

结果
这里写图片描述

参考链接:http://www.linuxidc.com/Linux/2011-04/34092.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值