上周在做西山居笔试题的时候,最后一题问到:获取本机与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));
结果