我知道机会极低,但有办法吗? 看看最近输出的nohup-ed进程是什么?
我仍然打开这个进程,但我已经将所有输出重定向到/ dev / null来运行它。
那么有没有办法将这样的过程恢复到控制台,或者它是没有希望的:(
干杯
答案 0 :(得分:8)
有一种方法,但它不是直截了当,诀窍是使用dup2并依赖于你的程序与libc链接的事实(所有的c / c ++应用程序都是,但java应用程序不会例如)
在gdb提示符下运行以下命令,将stdout重定向到/ tmp / newfile
$ print dup2(open(“/ tmp / newfile”,0),1)
运行以下命令将stderr重定向到/ tmp / newfile
$ print dup2(open(“/ tmp / newfile”,0),2)
dup2做的是
复制文件描述符 这意味着stdout / stderr(1和2)以及从open返回的新文件描述符都可以互换使用,这将导致所有输出转到stdout和stderr转到你打开的文件。