我知道机会极低,但是有没有办法看到最近输出的不及格流程?

我仍然打开这个进程,但我已经将所有输出重定向到 /dev/null 来运行它。

那么有没有办法将这样的过程恢复到控制台,还是没有希望:(

干杯

有帮助吗?

解决方案

有一种方法,但它不是直截了当的,技巧是使用 dup2 并取决于您的程序与 libc 链接的事实(所有 c/c++ 应用程序都是如此,但 java 应用程序不会是例如) )

  1. 使用 gdb 附加到您的进程
  2. 在 gdb 提示符下运行以下命令将 stdout 重定向到 /tmp/newfile

    $ print dup2(open("/tmp/newfile",0), 1)

  3. 运行以下命令将 stderr 重定向到 /tmp/newfile

    $ print dup2(open("/tmp/newfile",0), 2)

  4. 将 gdb 从你的进程中分离出来,你就完成了

什么 杜普2 确实是

复制文件描述符 这意味着 stdout/stderr(1 和 2)和从 open 返回的新文件描述符都可以互换使用,这将导致所有进入 stdout 和 stderr 的输出都转到您打开的文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top