将 stderr 从 python 的 exec-ed 进程重定向到 stdout?
在 bash 脚本中,我可以编写:
exec 2>&1
exec someprog
并且 someprog
的 stderr 输出将被重定向到 stdout。
有没有办法使用 python 的 os.exec* 做类似的事情
功能?
这不必是可移植的,只需在 Linux 上工作即可。
In a bash script, I can write:
exec 2>&1
exec someprog
And the stderr output of someprog
would be redirected to stdout.
Is there any way to do a similar thing using python's os.exec*
functions?
This doesn't have to be portable, just work on Linux.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
os.dup2(1, 2)
说明性示例
让我们使用虚假参数执行
/bin/ls
,以便它向 stderr 抱怨。前两次调用证明 ls 不会写入 stdout,而是将错误消息写入 stderr。
在第3次和第4次调用中,Python程序将文件描述符1复制为文件描述符2,达到了预期的效果。
os.dup2(1, 2)
Illuminating examples
Let's execute
/bin/ls
with a bogus argument so that it complains to stderr.First two invocations prove that
ls
does not write to stdout, and writes the error message to stderr.In the 3rd and the 4th invocation, the Python program duplicates file descriptor 1 as file descriptor 2, achieving the desired effect.