fork execlp调用中的子超时

时间:2011-03-22 12:03:52

标签: c++ timeout fork

我有一个程序,在子程序中ssh进入服务器并执行命令并返回。父级通过信号处理子级(SIGCHLD,SIG_IGN)。有没有一种方法可以让孩子在ssh服务器没有响应时超时,从命令行ssh并等待另一台服务器永远?

1 个答案:

答案 0 :(得分: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握手花费的时间比内核配置为等待的时间似乎不太可能。