У меня есть приложение C ++, которое использует ssh для вызова соединения с сервером. Я нахожу, что иногда сессия ssh остается без дела после того, как команда вызова сервера вышла. Глядя на справочную страницу Centos4 для ssh, я вижу следующее:
The session terminates when the command or shell on the remote machine
exits and all X11 and TCP/IP connections have been closed. The exit
status of the remote program is returned as the exit status of ssh.
Я вижу, что команда завершилась, поэтому я полагаю, что не все соединения X11 и TCP / IP были закрыты. Как я могу выяснить, какой из этих ssh ждет, чтобы я мог исправить приложение C ++ моей команды summon, чтобы очистить все, что осталось позади, что держит ssh открытым.
Интересно, почему этот сбой происходит только время от времени, а не при каждом вызове? Кажется, это происходит примерно в 50% случаев. Что могло оставить мое приложение C ++, чтобы вызвать это?
Дополнительные сведения: сервер является демоном, при запуске он разветвляется, и родительский процесс завершается, оставляя дочерний процесс запущенным. Клиент вызывает с помощью:
popen("ssh -n -o ConnectTimeout=300 user@host \"sererApp argsHere\""
" 2>&1 < /dev/null", "r")