从c++中的系统命令检索ping时间(ping x.x.x.x-n)
Retrieve ping time from system command in c++ (ping x.x.x.x -n)
我正在编写一个小型控制台应用程序(使用visualstudio 2012的windows plateform),它显示IP的当前ping和其他一些统计信息。(最近100次ping的平均值、数据包丢失等)以下是我的实际实现:
char buffer[100];
FILE *fp = _popen("ping -l 1 -n 1 61.5.222.121" , "r");
for (i=0;i<8;i++) {
fgets(buffer,100,fp);
}
_pclose(fp)
我用调用主函数
_beginthread( ping, 0, NULL );
然后我用strstr和sscann_s从缓冲区中提取ping。但当我执行程序时,我在进程管理器中看到ping.exe和cmd.exe不断打开/关闭,这很正常,因为在每个popen上,它都会启动一个。
我正在寻找一种更干净的方法来检索ping时间值。例如,每次在popen中创建新行时都可以读取输出的东西(使用命令"ping google.com-t"),这样就只有一个ping.exe和cmd.exe进程来完成所有作业,并且ping刷新时间会快得多。
我已经研究过IcmpSendEcho命令,但这对我来说非常复杂。我基本上想要一个简单的函数,它可以运行到后台,每次他收到新的命令时,都会在全局变量中写入ping响应时间。
如果执行IcmpSendEcho看起来很复杂,那么这个源代码可能会有所帮助,您可以根据需要进行修改。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用简单类型列表实现的指数编译时间.为什么
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在已经使用Git的情况下减少编译时间
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 从文本文件中读取时钟时间和事件时间并进行处理
- 具有未知值时的时间复杂性
- 如何减少花费的时间
- C++在变量给定的指定时间内关闭电脑
- rcpp函数中的清理时间很长
- C++:floor unix时间戳到UTC月份
- 如何在c++中录制具有精确帧时间戳的视频
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- KMP算法和LPS表构造的运行时间
- 为什么std::互斥需要很长的、非常不规则的时间来共享
- 从c++中的系统命令检索ping时间(ping x.x.x.x-n)