在另一个终端窗口中恢复已停止的进程

时间:2012-05-24 05:18:48

标签: linux process terminal command

我在Linux CentOS中执行了以下C代码来创建一个进程。

#include <stdio.h>
#include <unistd.h>

int main ()
{
        int i = 0;

        while ( 1 )
        {
              printf ( "\nhello %d\n", i ++ );
              sleep ( 2 );
        }
}

我把它编译成了hello_count。当我在终端窗口中执行./hello_count时,输出如下:

hello 0
hello 1
hello 2
...

当我在另一个终端窗口中输入命令时

ps -e

过程2956 ./hello_count列在那里。在同一窗口中,我使用以下方法停止了该过程:

kill -s SIGSTOP 2956

当我再次输入以下命令时,

ps -e

流程2956 ./hello_count仍然列出。

然后我输入以下命令以在同一个窗口中恢复该过程。

kill -s SIGCONT 2956

但是,该过程在上一个窗口中继续执行,并在其中执行输出。

是否有任何命令或任何方法在不同的终端窗口中使用pid 2956恢复(不重启)进程?

我的意思是,我需要像

这样的输出
hello 8
hello 9
...

在一个窗口之外的窗口,而不是在我停止进程之前获得上述输出的窗口。

1 个答案:

答案 0 :(得分:1)

您遇到的问题是,您的流程会附加到特定的tty,并且一旦启动流程通常无法切换tty。请参阅此question

你可以考虑一些hacky methods

对于真实世界的命令行方案,使用screen将允许您在虚拟终端中启动命令,然后从任何其他终端连接到该终端。但这不是一个程序化的解决方案,你的问题似乎表明你正在寻找。