我知道机会非常低,但有没有一种方法可以查看最近输出的nohup进程?
我仍然打开这个进程,但是将所有输出重定向到/dev/null。
那么,有没有办法将这样的进程恢复到控制台,还是无望了 :(
干杯
我知道机会非常低,但有没有一种方法可以查看最近输出的nohup进程?
我仍然打开这个进程,但是将所有输出重定向到/dev/null。
那么,有没有办法将这样的进程恢复到控制台,还是无望了 :(
干杯
有一种方法,但它不是直接的。诀窍是使用dup2,这取决于您的程序是否链接到libc(所有C/C++应用程序都会链接到libc,但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)和打开返回的新文件描述符可以互换使用,这将导致所有输出都发送到您打开的文件。