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

标签 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
...

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

最佳答案

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

有一些hacky methods你可以考虑一下。

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

关于linux - 在另一个终端窗口中恢复停止的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10731551/

相关文章:

linux - 哪个八进制值标志着 ubuntu 中程序的开始/为什么?

带有 EOF 的 java 运行 shell 命令

c - 如何在c控制台中将光标移回?

c - 增加正在运行的进程的堆大小

macos - 在 Terminal.app 中,选项+箭头键不再按单词移动

python - 防止 Paramiko 退出

linux - dpkg:不可恢复的 fatal error (包 'java-common' 的文件列表文件缺少最后的换行符)

linux - Linux内核模块列表中的 "Live"是什么意思?

linux - Crontab 抛出错误

c++ - 从进程导航到它的父进程