我想在某些设置文件中设置ping的默认截止日期。尝试连接到非ping IP地址时,我的程序挂起。
在终端中,我可以调用“ping 123.0.0.1 -w 5”,它不会永远存在,但我无法在代码中设置任何截止日期。
答案 0 :(得分:3)
Shell解决方案:
在.bashrc
添加以下内容:
function ping {
/bin/ping $@ -w5
}
这将创建一个包装函数,该函数会将所有调用的超时时间设置为5秒{/ 1}}
注意:上面的版本将覆盖命令行上使用的ping
参数。如果您仍希望能够通过命令行覆盖默认超时,而不是将-w
放在-w5
之前:
$@
纯C解决方案:
为简洁起见,我不会在这里举一个完整的例子。例如,您可能会找到一个here。在给定的示例中,您必须替换读取ICMP响应的function ping {
/bin/ping -w5 $@
}
调用,并且可以通过超时recvfrom()
或select()
来阻止。