我在Qt前端使用libssh2。我已经设置回调以处理接收和通过调用发送(回调从QTcpSocket读取/写入数据)。我的应用程序可以使用键盘提示方法成功登录。
登录后,我打开一个session(libssh2_channel_open_session(p_LIBSSH2_CHANNEL)),然后请求一个pty (libssh2_channel_request_pty(p_LIBSSH2_CHANNEL,"vanilla"))。
然后我运行一个命令(libssh2_channel_exec(p_LIBSSH2_CHANNEL,qbCommand.data()),它在后端使用less打开一个日志文件,然后将输出滚到grep以过滤一些有用的infor。当使用Putty或XShell之类的SSH工具在后端上运行时,此命令将成功工作。也就是说,它返回过滤器的所有出现。然而,在我的应用程序中,我只能读取输出的前6.5万个奇怪字符。我通过调用libssh2_channel_read_ex().来接收数据
为什么我只能从grep输出中读取有限数量的字符?
谢谢。
发布于 2014-04-30 08:16:43
我通过调用libssh2_channel_flush(p_LIBSSH2_CHANNEL)成功地接收了更多数据。,但是输出不是一致的。有时我会收到命令的全部输出(过滤后的日志文件的grep输出),而另一些时候则不会,但是我收到的数据比以前多了很多。
我在调用libssh2_channel_read_ex()之后立即刷新通道。这是对的吗?--我应该在什么时候调用同花顺才能得到一致的输出?
https://stackoverflow.com/questions/23359879
复制相似问题