2012-01-18 5 views
2

popen을 사용하여 마스터 프로그램에서 C++ 슬레이브 프로그램을 시작합니다. 그러나 이렇게함으로써 슬레이브가 작업을 완료 할 때까지 제어가 마스터 프로그램으로 돌아 가지 않습니다.새 스레드에서 마스터 프로그램 시작 슬레이브 시작

슬레이브를 별도의 세션 (또는 별도의 스레드)으로 시작하려면 어떻게해야합니까? 마스터가 제어가 마스터로 다시 전달되기 전에 마스터가 완료 될 때까지 기다리지 않아도됩니까?

나는 마스터가 종업원을 시작하고 끝내고, 종업원이 퇴장 한 후에 계속되는 노예와 함께 할 수 있기를 바란다.

답변

3

이렇게하려면 주 프로세스를 포크 한 다음 fork 명령이 반환하는 pid_t를 확인해야합니다. 거기에서 당신은 다음 당신이 원하는대로 간부 또는 popen 할 수 있습니다.

호출 할 때 호출 프로세스는 반환 한 pid_t를 가져옵니다 (이것은 방금 만든 자식 프로세스의 ID입니다). pid_t가 0이면 새로 생성 된 프로세스이며 원하는대로 처리 할 수 ​​있습니다.

pid_t childPid = fork(); 
if(childPid == 0) 
{ 
    // Do your process create here. 
    ... 

    // Abort this process once it returns control. 
    abort(); 
} 
관련 문제