1

現在のプログラムを別のプログラムでオーバーレイするためのexecveシステムコールがあります。コードは正常に機能しますが、私の要件は、このexecveシステムコールをforkシステムコールに変更することです。私は以下のようなことを試みています:

pid_t child_pid;
child_pid = fork();
if(child_pid == 0) {
       if (-1 == execve(...)) //Normal previous execve call
       {
          .............
       }
}
else
{ //fork parent process
exit(0);
}

execveシステムコールをforkに置き換えるときに、注意すべき点がわかりません。私の子プロセスでは、元のフローを維持するために既存のexecve呼び出しを呼び出しています(フォークがないかのように)が、親は何をすべきですか?通常終了するか、子プロセスが終了/終了するのを待つ必要があります。execve呼び出しは、現在のプロセスを新しいプロセスでオーバーレイするため、親/子プロセスの問題はありません。

4

3 に答える 3

0

それはあなた次第です。待つ必要がない場合は、終了するだけで済みます。その場合、子プロセスは孤立します。

于 2013-03-25T06:24:47.697 に答える
0

子の終了ステータスを知る必要がある場合、または子プロセスの終了wait()に実行する操作がある場合は、親を呼び出します。

上記のいずれも必要ない場合は、親プロセスを終了できます。孤立したプロセスはによって再ペアレント化されるinitため、悪影響はありません。

于 2013-03-25T06:27:37.080 に答える
0
 should I normally exit or I need to wait for the child process to exit/die

それはあなた次第であり、あなたの要件は、必要に応じて、wait(...)を使用して子プロセスを待つことができます。http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jspを参照してください。 ?topic =%2Fapis%2Fwait.htm

http://linux.die.net/man/2/forkもご覧ください。

于 2013-03-25T06:34:22.777 に答える