2012-03-18 2 views
0

forkexecv을 사용하는 두 개의 자식 프로세스를 시작하는 응용 프로그램을 만들었습니다.execv를 호출 할 때 stdin to parent 프로세스가 차단됨

string process; //initialized before execv call 
char** process_args; //initialized before execv call 
int pid = fork(); 
if(pid == 0) { 
    execv(process.c_str(), process_args); 
} 

프로세스는 시작하지만, 그들은 모든 어린이가 종료 될 때까지 STDIN에 대한 부모의 액세스를 차단합니다. 자식 프로세스가 아직 실행 중일 때 부모 프로세스가 STDIN에 액세스 할 수있게하려고합니다.

이 경우 가능합니까? execv을 사용할 필요가 없습니다. 일단 프로세스가 시작되면 프로세스는 실제로 서로의 개념을 가질 필요가 없습니다.

감사합니다.

+0

도움이되는지 확인하십시오. http://stackoverflow.com/q/1720535/1250303 – Java42

답변

0

어린이의 STDINexec*() 앞에 닫습니다.

+1

나는 단지'STDIN'을 닫으려고했지만, 콘솔을 위해서는 모든 스트림 ('IN','OUT' 및'ERR')을 닫아야 만한다는 것을 알았습니다 부모의 왜 그런지 아십니까? 또한 이제 부모 프로세스가 닫히면 자식 프로세스는 죽지 않지만 이전에는 없었습니다. 왜 그런 일이 일어날까요? 감사! – zsalzbank