2012-05-24 2 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 
... 

내가 다른 터미널 창 과정 2956 ./hello_count가이 목록에

ps -e 

으로 명령을 입력합니다. 과정 2956 ./hello_count가 여전히 목록에

kill -s SIGSTOP 2956 

내가 다시 다음 명령을 입력

,

ps -e 

: 같은 창에서 내가 사용하여 프로세스를 중지했습니다.

다음 명령을 입력하여 동일한 창에서 프로세스를 다시 시작합니다.

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-commandline) – mathieu

답변

1

문제는 프로세스가 특정 tty에 연결되어 있고 프로세스가 시작되면 tty으로 전환하는 것이 일반적으로 불가능하다는 것입니다. 이 question을 참조하십시오.

hacky methods 당신이 생각할 수있는 것이 있습니다.

현실 세계 명령 줄 시나리오의 경우 screen을 사용하면 가상 터미널에서 명령을 시작한 다음 다른 터미널에서 해당 터미널에 연결할 수 있습니다. 그러나 이것은 귀하의 질문이 당신이 찾고있는 것처럼 보이는 계획적인 해결책이 아닙니다.

관련 문제