2012-04-06 46 views
1

我打電話系統命令調用TFTP從C源代碼

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

TFTP服務器運行時,它工作正常,但它使在TFTP服務器已關閉我的C程序崩潰get命令。

有沒有辦法來檢查服務器是否可用或不在c源代碼?

回答

2

我認爲你的問題不在於服務器的可用性,而是tftp(至少在我的Ubuntu盒子上)不支持你提供的命令行參數。事實上,它唯一支持的命令行參數是服務器的名稱。

但是,你可以嘗試管道命令到TFTP(模擬交互會話),像這樣:

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

如果服務器不可用,它會在幾秒鐘後超時,並返回控制到你的程序。

+0

是的,伊桑我很感謝你的聰明advice.I適用你的方法有點改變 – roll 2012-04-10 10:31:22

0
system("echo -e \"timeout 1\\nget myfile\" | tftp 192.168.1.1"); 

我使用超時選項而不是quit命令,因爲實際的延遲使得我的程序看門狗復位正在執行get命令執行。所以退出不能阻止這一點。

另一方面,我決定在啓動我的c程序的bash腳本上調用tftp命令。

我認爲在實時c程序中調用tftp commad是有缺陷的。

非常感謝Ethan。