【发布时间】:2017-02-22 06:50:35
【问题描述】:
我正在使用 perl Net::SSH2 v0.48 并尝试执行从标准输入读取输入的远程脚本。此连接的通道使用 vt100 pty 来满足某些特定要求。将数据写入标准输入后,我还调用了$channel->send_eof();。但是远程脚本似乎根本没有收到任何 EOF 字符。远程脚本在 python 中并从标准输入读取,如sys.stdin.read(),它挂起直到它得到一个 EOF。当我禁用 pty 或将 chr(4) 附加到作为 EOF 字符的输入有效负载时,这个问题就会得到解决。
问题:
- 知道为什么
send_eof()不起作用吗? - 解决此问题的最佳方法是什么?
- 如果启用了 pty,我可以假设
send_eof()不是必需的吗?
附:我现在不包含任何代码 sn-p 因为生产代码太复杂而无法解释问题,并且需要一些时间来准备最小代码的工作版本。但我会尽快用代码示例更新我的问题。
【问题讨论】:
-
0.48 版已经很老了,而且漏洞百出。您应该使用更新的。