我想捕获正在重定向到的stdout
正在运行的进程。我尝试使用系统调用,但是当我关闭 fd“1”时,它被分配给其他文件,因为它是最低的可用 fd 编号。stdout
/dev/null
fcntl()
有什么想法如何锁定给定的 fd 并重新分配给其他文件吗?
答案1
我认为你可以通过使用 proc 文件系统来捕获它:
$ cat /proc/<PID>/fd/1
答案2
答案3
您可以使用重定向(https://github.com/jerome-pouiller/reredirect/)。
reredirect -m /dev/null <PID>
您可以稍后使用以下命令恢复进程的初始输出:
reredirect -N -O <M> -E <N> <PID>
(<M>
并且<N>
由之前启动的重定向提供)。
reredirectREADME
还解释了如何重定向到另一个命令。