如果我使用 popen,如何从 ping 命令获取接收到的数据包数,平均往返时间

How to get number of packets received, Average round trip time from ping command if I use popen

我必须 ping 给定的 IP 地址,我需要在 C++ 中打印以下值。使用popen并获得输出就可以了。

1) Average Response Time
2) Data Block Size
3) Failure Count
4) Max. Response time
5) Min. Response time
6) Number Of Repetitions
7) Success Count
8) TimeOut

如果我使用 popen,我会得到一个文件指针,我需要读取这个文件指针以获得整个输出,我必须使用一些字符串操作来提取值。任何人都可以让我知道是否有任何其他方法而不是使用字符串操作?是否有任何数据结构将由操作系统维护,通过它我可以在执行 ping 命令后获取值?

我想不出比从您读取的字符串中提取结果更好的方法了。正是解析字符串的最佳方式,我不确定[主要是因为我没有花太多时间考虑它!]

另一种方法当然是编写您自己的 ping 内部实现,但我相当确定这比在系统 popen 上使用解析器要多得多ping - 除非你想要非常便携的代码[但是那也需要一个非常便携的网络包,因为原生网络也不是很便携]。