与以前的许多问题类似,我发现自己正在做一个我希望在屏幕上运行的工作。 我不得不放弃这个过程,因为我需要断开连接。 现在我重新连接了,我看到这个过程还在运行。 我怎样“回收”这个过程,以便我可以看到它的输出并给出它的input?
这个问题不同于将正在运行的进程移动到屏幕上,因为它涉及重新打开丢失的stdin / out / err句柄。
这是一个重复的问题 – 请参阅将已经运行的进程移动到屏幕 ,指向retty ,这是一个自我描述的可怕的黑客实施我总是猜到可能,但从来没有真正尝试过:它发现fd 0,1 ,和2(分别标准进,出,和错误)的过程,并重视他们,就像一个可怕的exception寄生虫,不应该。
通过忽略这个过程,你实际上是在说,你希望它忽略terminal发出的SIGHUP。 一旦你closures了会话(比如说bash),这个进程就会被init所拥有。 所以当你说你想放弃所有权之后重新拥有一个stream程时,你说的是要把所有权从另一个stream程中拿走 – 这是没有实现的,而且是有原因的。 这在Linux中是不可能的。