If then语句c编程

If then statement c programming

我想知道是否有人可以帮助我为 ping 编写一个 if then 语句..

示例 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,并在主机可访问时在我的 LCD 上显示 "Ping Successful"。当主机无法访问时,我希望在我的 LCD 上显示 "Ping Unsuccessful",直到主机再次可以访问。

如果有人能帮助我,我将不胜感激!

您必须捕获 ping 输出并以某种方式处理它,但您使用的是 system()。

我建议您了解如何使用 popen() 来执行该过程并将输出通过管道传输到内存中的某个位置,以便您随后可以解析输出并找出 ping 的结果。

现在您依赖于 system() 来 return 一个值 - system() 不知道也不关心您的 ping 是否成功。如果进程执行失败,系统将 return -1,如果有帮助,系统将 return 进程成功完成时的退出状态。

ETA - 此外,从阅读代码看来,无论 system() 是什么,你都输出相同的消息 returning。

你的大括号在语法上不正确(括号需要在 if 之后而不是在 system 之后开始)。另请在下面找到使用 W* 宏的 return 状态 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");
}