我正在使用perl Net :: SSH2 v0.48并尝试执行从stdin读取输入的远程脚本。此连接的通道使用vt100 pty来满足某些特定要求。在向stdin写入数据后,我也在调用$channel->send_eof();
。但远程脚本似乎根本没有收到任何EOF字符。远程脚本在python中并从stdin读取,如sys.stdin.read()
,它会挂起,直到它获得EOF。当我禁用pty或附加chr(4)
输入有效负载(即EOF字符)时,这个问题就会得到解决。
问题:
send_eof()
无效?send_eof()
吗?P.S。我现在没有包含任何代码片段,因为生产代码太复杂而无法解释问题,并且需要一些时间来准备最小代码的工作版本。但我会尽快用代码示例更新我的问题。
答案 0 :(得分:2)
如果pty已启用,我可以假设不需要send_eof()吗?
来自docs:
<强> send_eof 强>
向远程端发送EOF。
发送EOF后,不再向遥控器发送数据 处理STDIN频道。
请注意如果为频道请求了PTY,远程服务器可能会忽略EOF。