我正在调用系统命令
system("tftp -m binary 192.168.1.1 -c get myfile > /dev/null") ;
当tftp服务器运行时它工作正常但是当tftp服务器关闭时它会使我的c程序崩溃。
有没有办法在c源代码中检查服务器是否可用?
答案 0 :(得分:2)
我认为你的问题不在于服务器的可用性,而是tftp(至少在我的Ubuntu盒子上)不支持你提供的命令行参数。事实上,它支持的唯一命令行参数是服务器的名称。
但是,您可以尝试将命令发送到tftp(模拟交互式会话),如下所示:
system( "echo -e \"binary\\nget myfile\\nquit\" | tftp 192.168.1.1" );
如果服务器不可用,它将在几秒钟后超时并将控制权返回给您的程序。
答案 1 :(得分:0)
system("echo -e \"timeout 1\\nget myfile\" | tftp 192.168.1.1");
我使用了超时选项而不是quit命令,因为我的程序看门狗重置的实际延迟是在执行get命令时执行的。所以退出不能阻止这一点。
另一方面,我决定在启动我的程序的bash脚本上调用tftp命令。
我认为在实时c程序上调用tftp commad是错误的。
非常感谢Ethan。