如果然后声明c编程

时间:2015-11-16 19:12:49

标签: c ping lcd

我想知道是否有人可以帮我写一个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不成功"在我的液晶显示屏上显示,直到主机再次可以访问。

如果有人能帮助我,我会非常感激!

2 个答案:

答案 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 - 同样,通过阅读代码,无论系统()返回什么,它似乎都会输出相同的消息。