私は孫のコンセプトを理解しようとしています。 私は与えられた数の息子(つまり兄弟)を作成することができますが、私は複数の世代を作成する方法を知らない。 これは私が1人の孫を作成するためにやったことです:複数世代の子プロセスを作成する
int main()
{
//Displaying the father
printf("Initial : Father = %d\n\n", getpid());
/****** FORK *******/
pid_t varFork, varFork2;
varFork = fork();
if(varFork == -1) //If we have an error, we close the process
{
printf("ERROR\n");
exit(-1);
}
else if (varFork == 0) //if we have a son, we display it's ID and it's father's
{
printf("SON 1\n");
printf(" ID = %d, Father's ID = %d\n", getpid(), getppid());
varFork2 = fork();//creation of the second fork
if(varFork2 == -1) //If we have an error, we close the process
{
printf("ERROR\n");
exit(-1);
}
else if (varFork2 == 0) //now we have the son of the first son, so the grandson of the father
{
printf("\nGRANDSON 1\n");
printf(" ID = %d, Father's ID = %d\n", getpid(), getppid());
}
else sleep(0.1);/*we wait 0.1sec so that the father doesn't die before we can
display it's id (and before the son process gets adopted by a user process descending from the initial process)*/
}
else //in the other case, we have a father
{
sleep(0.1);//again we put the father asleep to avoid adoption
}
return 0;
}
どのように私は孫のX世代を作成することができ、Xグローバル変数(1sonなど1人の孫、1ひ孫、)であること?
OT: 'sleep()'は整数をとります。暗黙的な型変換のため、 'sleep(0.1)'の結果は 'sleep(0)' – alk
'printf(" Error \ n ")'になります。そして、「ほとんど常に」という言い方をすれば、私はいつもそうです。 UNIXのコンベンションでは3つのオープンファイル記述子でプロセスを開始する理由があり、それらをすべて使用する習慣が必要です。エラーメッセージは意味を持ち、適切なストリームに書き込まれている必要があります。 'fprintf(stderr、"エラー\ n ")' –
メッセージを意味のあるものにするために、 'man perror' –