1

我正在调用系统命令

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

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

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

4

2 回答 2

2

我认为您的问题不在于服务器的可用性,而在于 tftp(至少在我的 Ubuntu 机器上)不支持您提供的命令行参数这一事实。事实上,它支持的唯一命令行参数是服务器的名称。

但是,您可以尝试将命令通过管道传输到 tftp(模拟交互式会话),如下所示:

system( "echo -e \"binary\\nget myfile\\nquit\" | tftp 192.168.1.1" );

如果服务器不可用,它将在几秒钟后超时并将控制权返回给您的程序。

于 2012-04-06T17:28:51.730 回答
0
system("echo -e \"timeout 1\\nget myfile\" | tftp 192.168.1.1");

我使用超时选项而不是退出命令,因为使我的程序看门狗重置的实际延迟是在执行 get 命令时执行的。所以退出不能阻止这一点。

另一方面,我决定在启动我的 c 程序的 bash 脚本上调用 tftp 命令。

我认为在实时 c 程序上调用 tftp commad 是错误的。

非常感谢伊桑。

于 2012-04-10T10:48:43.997 回答