在python,linux中获取stderr redirect的目标

时间:2014-04-30 11:43:30

标签: python linux

我正在使用

将stderr重定向到一个文件
python foo.py 2> stderror.txt

一旦脚本完成,我想用{/ 1>移动{/ 1}}

stderror.txt

我的问题 - 如果我将stderr重定向到subprocess.call(['cp', 'stderror.txt', 'destination.txt']) 怎么办?有没有办法以编程方式从脚本中获取重定向的目标?

(注意:我知道这不是解决问题的方法。只是好奇。)

1 个答案:

答案 0 :(得分:2)

一种可能的方法是阅读链接/proc/<pid>/fd/2

os.readlink("/proc/%d/fd/2" % os.getpid())

快捷方式是使用/proc/self/fd/2。在未经重定向的情况下,您将在/dev中获得一些特殊文件,通常是伪终端。对于其他操作系统,请参阅this related question