3

我在 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
...

在我停止进程之前获得上述输出的窗口之外的窗口中。

4

1 回答 1

2

您遇到的问题是您的进程附加到一个特定的进程tty,并且一旦进程启动就切换tty通常是不可能的。看到这个问题

您可以考虑一些hacky 方法。

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

于 2012-05-24T05:24:21.957 回答