1
我正在处理ssh进入主机,然后sudo到特权用户的脚本。由于我们的主机不允许使用非tty会话进行sudo,所以启用了伪tty。撤消全局STDERR - > STDOUT重定向
pseudo-tty自动将所有STDERR输出重定向到STDOUT。这导致项目的一系列问题,因为从属库不能很好地处理STDERR输出。
是否可以撤消STDERR - > STDOUT输出重定向?换句话说,是否有可能在全球范围内将所有STDERR输出而不是发送到STDOUT?我知道可以在每个命令的基础上进行,但我正在寻找一种方法来做到这一点,只需要做一次 - 理想情况下,当向主持人开放时。
是的,你可以。您可以克隆文件描述符,然后关闭PDT中对应于“stdout”和“stderr”的条目1和2,然后添加克隆的FD,它将占用PDT中未使用的第一个条目。 (新近关闭1和2个条目)。我认为... –
@TonyTannous:这是一个新的重定向,它不会撤消以前的重定向。您无法撤消重定向,因为关闭后fd过去的位置丢失的知识。你只能猜测它曾经去过的地方,并尝试重新打开它。 –
好吧。谢谢:)我的意思是你可以“恢复”它的stdin和stdout,例如我们知道他们的FD曾经在PDT中的位置。但我同意你的评论。 –