【问题标题】:Resuming a stopped process in another terminal window在另一个终端窗口中恢复停止的进程
【发布时间】:2012-05-30 16:28:38
【问题描述】:

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

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

【问题讨论】:

标签: linux process terminal command


【解决方案1】:

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

您可以考虑一些hacky methods

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

【讨论】:

    猜你喜欢
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 2015-08-15
    • 1970-01-01
    • 2011-08-15
    • 2021-11-06
    • 1970-01-01
    相关资源
    最近更新 更多