【发布时间】:2020-01-20 14:58:10
【问题描述】:
我目前正在尝试编写一些 ping 不同 IP 的测试。我得到了这些命令的system(),但我想读取控制台输出并基于该写入string(like TEST PASSED/TEST FAILED)。有没有办法在不将控制台日志保存到文件并从中读取的情况下做到这一点(对我来说似乎太复杂了)。
下面是我做的简单代码示例:
switch (choice) {
case 1:
system("ping -c " STR(COUNTER)" -w "STR(TIMER) " " STR(DEI));
printf("----------------------------------------------------\n\n");
break;
case 2:
system("ping -c " STR(COUNTER)" -w "STR(TIMER) " " STR(AURIX));
printf("----------------------------------------------------\n\n");
break;
case 3:
system("ping -c " STR(COUNTER)" -w "STR(TIMER) " " STR(MID2EI));
printf("----------------------------------------------------\n\n");
break;
case 4:
system("ping -c " STR(COUNTER)" -w "STR(TIMER) " " STR(VEI));
printf("----------------------------------------------------\n\n");
break;
case 5:
printf("Quitting...\n");
sleep(1000);
running = false;
break;
default:
printf("Wrong input. Try again.\n");
printf("----------------------------------------------------\n\n");
break;
}
【问题讨论】:
-
您可以使用
popen()而不是system()来读取父进程中的命令输出 -
好的,我如何访问我感兴趣的输出中的位(在这种情况下是“x% 丢包”?
-
使用标准 C 字符串函数
-
为什么?
ping返回一个合理的退出值,系统返回。不解析输出,只检查返回值。