Jak wykryć zakończenie połączenia ssh (przez QProcess)?

Używam tunelu ssh z aplikacji używającej aQProcess:

QProcess* process = new QProcess();
process->start("ssh", QStringList()<<"-L"<<"27017:localhost:27017"<<"example.com");

Jak na razie działa świetnie, jedyny problem polega na tym, że nie widzę, kiedy port został utworzony.

Po uruchomieniu polecenia na powłoce łączenie się ze zdalnym hostem zajmuje około 10 sekund, po czym przekazany port jest gotowy do użycia. Jak mogę go wykryć z mojej aplikacji?

EDYTOWAĆ:

Jak zasugerował vahancho, użyłem faktu, że po połączeniu istnieje pewne wyjście na terminalu, które może być użyte do wykrycia, że ​​połączenie się powiodło. Istnieje jednak linia, która jest uruchamiana natychmiast po uruchomieniuPseudo-terminal will not be allocated because stdin is not a terminal, co prawdopodobnie spowodowałoby fałszywy alarm. Prawidłowe wyjście jest dostępne w drugim sygnale, emitowanym nieco później (co jest prawdziwym wskaźnikiem otwieranego portu). Aby pozbyć się pierwszej wiadomości, używam teraz sshssh -t -t wymusić alokację standardową.

Pozostaje więc tylko jedno pytanie: czy ktoś może mi pomóc bez obaw w tym podejściu?

questionAnswers(2)

yourAnswerToTheQuestion