可能重复:
Redirect STDERR / STDOUT of a process AFTER it’s been started, using command line?
在Bash中,有没有办法在进程已经运行时捕获/重定向进程的输出(和stderr?)?
答案 0 :(得分:7)
可以使用gdb。这个问题已在this thread中得到解答。
答案 1 :(得分:4)
没有,至少没有真正可靠。
当一个进程被分叉时,它(至少)它的前三个文件描述符由它的父类在fork()之前排列,所以它继承它们。
在fork之后,没有内核代码,除了该进程之外的任何进程都不能对它们做任何事情。
好吧,好吧,几乎没有。系统调用支持调试器(例如gdb)可用于在进程中戳戳内存和强制函数调用。在试管中,这可以用于关闭和重新打开这些流。在现实生活中,没有人知道当你在调试器中捕获它时,进程是否会处于一个非常不幸的状态,并且如果你尝试这个,它将通过自焚来做出响应。