Bash:重定向已经运行的进程的输出?

时间:2010-10-19 00:19:30

标签: bash unix process pipe

  

可能重复:
  Redirect STDERR / STDOUT of a process AFTER it’s been started, using command line?

在Bash中,有没有办法在进程已经运行时捕获/重定向进程的输出(和stderr?)?

2 个答案:

答案 0 :(得分:7)

可以使用gdb。这个问题已在this thread中得到解答。

答案 1 :(得分:4)

没有,至少没有真正可靠。

当一个进程被分叉时,它(至少)它的前三个文件描述符由它的父类在fork()之前排列,所以它继承它们。

在fork之后,没有内核代码,除了该进程之外的任何进程都不能对它们做任何事情。

好吧,好吧,几乎没有。系统调用支持调试器(例如gdb)可用于在进程中戳戳内存和强制函数调用。在试管中,这可以用于关闭和重新打开这些流。在现实生活中,没有人知道当你在调试器中捕获它时,进程是否会处于一个非常不幸的状态,并且如果你尝试这个,它将通过自焚来做出响应。