Как определить, когда соединение ssh (через QProcess) завершено?
Я запускаю ssh-туннель из приложения, использующегоQProcess
:
QProcess* process = new QProcess();
process->start("ssh", QStringList()<<"-L"<<"27017:localhost:27017"<<"example.com");
Пока все работает отлично, единственная проблема в том, что у меня нет возможности увидеть, когда порт был фактически создан.
Когда я запускаю команду в оболочке, подключение к удаленному хосту занимает около 10 секунд, после чего перенаправленный порт готов к использованию. Как я могу обнаружить это из моего приложения?
РЕДАКТИРОВАТЬ:
Как предположил vahancho, я использовал тот факт, что после подключения на терминале есть некоторый выход, который можно использовать для обнаружения успешного подключения. Тем не менее, есть линия, которая запускается сразу после запускаPseudo-terminal will not be allocated because stdin is not a terminal
что, вероятно, даст ложную тревогу. Правильный вывод доступен во втором сигнале, излучаемом чуть позже (который является истинным индикатором открытия порта). Чтобы избавиться от первого сообщения, я сейчас запускаю ssh, используяssh -t -t
заставить распределение stdin.
Итак, остается только один вопрос: может ли кто-нибудь помочь мне, не беспокоясь о таком подходе?