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