libssh2 を使用してリモート コンピューターにログインし、次に libssh2_channel_exec を呼び出してデーモン プログラムを実行します。デーモン プログラムは利用可能な tcpip ポートを選択し、選択した prot をコンソール (stdio) に出力します。次に、デーモンは着信接続のポートをリッスンします。これらのステップの後、クライアントは「libssh2_channel_read」によって stdio から選択された tcp ポートを読み取ります。正しい値を取得できます。しかし、問題は次のとおりです。libssh2 チャネル (libssh2_channel_close()) を閉じると、リモート プログラムが終了するまでプログラムがブロックされます。リモート プログラムを閉じずにチャネルを閉じる方法はありますか? ログインと使用可能な prot 番号にのみ ssh を使用するため、これで十分です。
また、リモートプログラムは Qt の QCoreApplication を使用するため、利用可能な prot を出力した後、クライアントに応答するために app.exec() のイベントループに入りますので、ポート番号を出力した直後に終了してはいけません。