2011-03-22 65 views
2

我有一個程序,在子進程中ssh進入一個服務器並執行一個命令並返回。父母通過信號處理孩子(SIGCHLD,SIG_IGN)。有沒有一種方式,如果ssh服務器沒有響應,並且從命令行輸入SSH並永遠等待另一臺服務器,孩子會超時?fork execlp調用中的子進程超時

回答

0

ssh_config(5)

ConnectTimeout 
     Specifies the timeout (in seconds) used when 
     connecting to the SSH server, instead of using the 
     default system TCP timeout. This value is used only 
     when the target is down or really unreachable, not 
     when it refuses the connection. 

你可以看到它工作得很好,以縮短延遲:

$ time ssh -oConnectTimeout=1 ehrlichman 
ssh: connect to host ehrlichman port 22: Connection timed out 

real 0m1.038s 
user 0m0.000s 
sys 0m0.000s 
$ 

但它可能不會增加對永遠延遲工作;允許TCP握手花費的時間比內核被配置爲等待時間似乎不太可能。