UNIXプログラミングを学ぼうとしていますが、fork()に関する質問に遭遇しました。fork()は現在実行中のプロセスと同じプロセスを作成することを理解していますが、どこから開始するのですか?たとえば、コードがある場合
int main (int argc, char **argv)
{
int retval;
printf ("This is most definitely the parent process\n");
fflush (stdout);
retval = fork ();
printf ("Which process printed this?\n");
return (EXIT_SUCCESS);
}
出力は次のとおりです。
これは最も確実に親プロセスです
どのプロセスがこれを印刷しましたか?
どのプロセスがこれを印刷しましたか?
私はそれfork()
が同じプロセスを作成すると思ったので、最初はそのプログラムでは、fork()
呼び出しは永久に再帰的に呼び出されると考えました。から作成された新しいプロセスfork()
は、fork()
呼び出し後に開始すると思いますか?
次のコードを追加して、親プロセスと子プロセスを区別する場合、
if (child_pid = fork ()) printf ("This is the parent, child pid is %d\n", child_pid);
else printf ("This is the child, pid is %d\n",getpid ());
fork()呼び出しの後、子プロセスはどこで実行を開始しますか?
man fork
あなたの質問に答えるのに十分だと確信しています、ところで