此代码以错误终止:
(
ssh localhost seq 100000
seq 100000
) | wc
#-> seq: write error: Resource temporarily unavailable
这是重现写入错误的最少代码。重点不是更改子进程/管道体系结构以使其工作,而是要理解为什么将 fd 1 分配给稍后重用以写入大输出的管道时会出现此错误。
为什么 SSH 客户端会留下 stdout 文件描述符脏?这是设计缺陷吗?是否可以选择让它像另一个进程那样工作?
编辑:感谢评论中的线索,我怀疑它可能与 OpenSSH 版本 7.9 到 8.4 有关