【发布时间】:2010-10-03 12:01:06
【问题描述】:
我使用 libssh2 登录远程计算机,然后调用 libssh2_channel_exec 执行守护程序,守护程序将选择一个可用的 tcpip 端口并将选定的 prot 打印到控制台(stdio)。然后,守护进程将监听传入连接的端口。 在这些步骤之后,客户端将通过“libssh2_channel_read”从 stdio 读取选定的 tcp 端口。我可以得到正确的值。 但问题是: 当我关闭 libssh2 通道 (libssh2_channel_close()) 时,程序将被阻塞,直到远程程序退出。有什么方法可以在不关闭远程程序的情况下关闭频道?因为我只将 ssh 用于登录和可用的 prot 编号,所以这就够了。
另外,远程程序使用Qt的QCoreApplication,所以打印出可用的prot后,会进入app.exec()的事件循环响应客户端,所以打印完端口号后不能立即退出.
【问题讨论】: