我打電話系統命令調用TFTP從C源代碼
system("tftp -m binary 192.168.1.1 -c get myfile > /dev/null") ;
TFTP服務器運行時,它工作正常,但它使在TFTP服務器已關閉我的C程序崩潰get命令。
有沒有辦法來檢查服務器是否可用或不在c源代碼?
我打電話系統命令調用TFTP從C源代碼
system("tftp -m binary 192.168.1.1 -c get myfile > /dev/null") ;
TFTP服務器運行時,它工作正常,但它使在TFTP服務器已關閉我的C程序崩潰get命令。
有沒有辦法來檢查服務器是否可用或不在c源代碼?
我認爲你的問題不在於服務器的可用性,而是tftp(至少在我的Ubuntu盒子上)不支持你提供的命令行參數。事實上,它唯一支持的命令行參數是服務器的名稱。
但是,你可以嘗試管道命令到TFTP(模擬交互會話),像這樣:
system("echo -e \"binary\\nget myfile\\nquit\" | tftp 192.168.1.1");
如果服務器不可用,它會在幾秒鐘後超時,並返回控制到你的程序。
system("echo -e \"timeout 1\\nget myfile\" | tftp 192.168.1.1");
我使用超時選項而不是quit命令,因爲實際的延遲使得我的程序看門狗復位正在執行get命令執行。所以退出不能阻止這一點。
另一方面,我決定在啓動我的c程序的bash腳本上調用tftp命令。
我認爲在實時c程序中調用tftp commad是有缺陷的。
非常感謝Ethan。
是的,伊桑我很感謝你的聰明advice.I適用你的方法有點改變 – roll 2012-04-10 10:31:22