2012-03-18 4 views
0

forkexecvを使用して2つの子プロセスを起動するアプリケーションを作成しました。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

関連する問題