我想知道是否有人可以帮我写一个if if语句来ping ...
示例IP:192.168.10.1
这是我到目前为止所拥有的......
lcd_command(LINE_1);
if system(("ping -c1 192.168.10.1")) {
lcd_writechars("Ping Successful");
}
else {
lcd_writechars("Ping Successful");
}
基本上,我希望脚本每隔10秒ping一次,然后让#34; Ping成功"当主机可以访问时,在我的LCD上显示。当主机无法访问时,我想要" Ping不成功"在我的液晶显示屏上显示,直到主机再次可以访问。
如果有人能帮助我,我会非常感激!
答案 0 :(得分:3)
您的大括号在语法上不正确(括号需要在if
之后而不是在system
之后开始)。另请参阅下面使用W *宏正确使用system
调用的返回状态。
int status = system("ping -c1 192.168.10.1");
if (WIFEXITED(status) && WEXITSTATUS(status) == 0) {
lcd_writechars("Ping Successful\n");
}
else {
lcd_writechars("Ping failed\n");
}
答案 1 :(得分:2)
您必须捕获ping输出并以某种方式处理它,但您正在使用system()。
我建议您学习如何使用popen()来执行进程并将输出传递到内存中的某个位置,以便您可以解析输出并找出ping的结果。
现在你依靠system()来返回一个值 - system()不知道或不关心ping是否成功。如果进程执行失败,系统将返回-1,如果成功完成,系统将返回进程的退出状态。
ETA - 同样,通过阅读代码,无论系统()返回什么,它似乎都会输出相同的消息。