我在Linux的一个终端上有一个停止的进程。现在我在另一个终端上。我该如何启动这个进程?我应该发送什么kill信号?我拥有这个进程。
如果其他终端会话仍然存在,您可以发出kill -CONT pid命令来达到您想要的效果。 如果其他会话已经关闭,则可能没有任何地方放置输出。
> gdb /bin/sh 4711
...
Attaching to program: /bin/sh, process 4711
...
(gdb) p close(1)
$1 = 0
(gdb) p creat("/tmp/testout.txt",0644)
$2 = 1
(gdb) p close(2)
$3 = 0
(gdb) p dup2(1,2)
$4 = 2
编辑 - 解释:这将关闭文件句柄1,然后打开一个文件,重用了1。然后它关闭文件句柄2并将文件句柄1复制到2。
现在,这个进程的stdout
和stderr
会流向指定的文件,并且可以从那里读取。如果需要stdin
,则需要p close(0)
,然后连接一些输入文件或管道等。
目前为止,我找不到一种方法来远程disown
这个进程,使其脱离控制终端,这意味着当终端退出时,这个进程会收到SIGHUP
信号。
注意:如果您有/获得对其他终端的访问权限,则可以使用disown -a
,以便在终端关闭后,此进程将继续运行。