libssh2_channel_close будет заблокирован до завершения удаленной команды - PullRequest
1 голос
/ 21 июня 2010

Я использую libssh2 для входа на удаленный компьютер, затем вызываю libssh2_channel_exec для запуска программы-демона, программа-демон затем выбирает доступный порт tcpip и печатает выбранный прот на консоль (stdio). Затем демон будет прослушивать порт для входящего соединения. После этого шага клиент будет читать выбранный порт TCP из stdio с помощью "libssh2_channel_read". Я могу получить правильное значение. Но вопрос в том, Когда я закрываю канал libssh2 (libssh2_channel_close ()), программа будет заблокирована, пока удаленная программа не завершится. Существуют ли способы закрыть канал без закрытия удаленной программы? Поскольку я использую ssh только для входа в систему и доступного номера протета, это достаточно.

Кроме того, удаленная программа использует QCoreApplication Qt, поэтому после распечатки доступного prot она войдет в цикл обработки событий app.exec (), чтобы ответить клиенту, поэтому она не должна выходить сразу после печати номера порта. .

1 Ответ

0 голосов
/ 21 июня 2010

Там функция в libssh2 может решить мою проблему .. :) "libssh2_session_set_blocking" libssh_session_set_blocking (mysession, 0); // это установит работу libssh2 с неблокирующим режимом.

Левая работа вя должен убедиться, что клиент прочитал все выходные данные сервера, без блокировки, я должен сам контролировать EOF.:) Спасибо Stackoverflow, спасибо Google!

...