2012-05-24 62 views
1

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

男人的屏幕是你想讀的。 – bmargulies

+0

AFAIK這是不可能的。 –

+0

[通過命令行恢復已停止的進程]可能的重複(http://stackoverflow.com/questions/10700312/resume-a-stopped-process-through-command-line) – mathieu

回答

1

您遇到的問題是,一旦啓動進程通常不可能,您的進程附加到特定的tty並切換tty。看到這個question

有一些hacky methods你可以考慮到你。

對於真實世界的命令行場景,使用screen將允許您在虛擬終端中啓動命令,然後從任何其他終端連接到該終端。但這不是一個你的問題似乎表明你正在尋找的程序化解決方案。