从c源代码调用tftp get命令

时间:2012-04-06 15:14:20

标签: c command tftp

我正在调用系统命令

system("tftp -m binary 192.168.1.1 -c get myfile  > /dev/null") ;

当tftp服务器运行时它工作正常但是当tftp服务器关闭时它会使我的c程序崩溃。

有没有办法在c源代码中检查服务器是否可用?

2 个答案:

答案 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。