与之前的许多问题类似,我发现自己正在运行一项我希望在屏幕上运行的工作。我被迫否认这个过程,因为我需要断开连接。现在我已经重新连接,我看到进程仍在运行。我怎样才能“回收”这个过程,以便我可以看到它的输出并给它输入?
这个问题与仅仅将正在运行的进程移动到屏幕不同,因为它涉及重新打开丢失的 stdin/out/err 句柄。
这是一个重复的问题 - 请参阅将已经在运行的进程移至 Screen,它指向retty,这是一个自我描述的可怕黑客,实现了我一直猜测可能但从未真正尝试过的东西:它找到 fd 0, 1 , 和 2(分别为标准输入、输出和错误)并附加到它们上,就像一个可怕的异常寄生虫,不应该是。
通过否认该进程,您实际上是在说您希望它忽略终端发出的 SIGHUP。一旦你关闭了你的会话(比如 bash),这个进程就会被 init 拥有。因此,当您说您想在放弃所有权后重新拥有一个流程时,您是在说您想从另一个流程中夺走所有权——这并未实施,而且有充分的理由。这在 Linux 中是不可能优雅地完成的。
归档时间: |
|
查看次数: |
31955 次 |
最近记录: |