char array[ARRAY_SIZE];
void child_process_routine(){
int j;
for(j = 0;j<ARRAY_SIZE;j++)
array[j]='d';
}
main()
{
pid_t child_pid;
int i;
for(i = 0;i<ARRAY_SIZE;i++)
array[i]='c';
child_pid = fork();
switch (child_pid) {
case -1:
perror("error");
exit(1);
case 0:
child_process_routine();
exit(0);
default:
wait(NULL);
}
print_array(array);
}
親プロセスが子プロセスを待たないと、これが再び私に出力「CCCCCC」を与える、なぜあなたは私を説明することができますか?子プロセスで「dddddd」に変更されました親プロセスは子プロセス(Cコード)を待ちません
待機(NULL)とは何ですか?
子プロセスを待つ必要があることをどのように知っていますか?
子は親のアドレス空間のコピーを取得します。 'array []'の変更は子のコピーに対してのみ行われ、親のコピーは変更されません。オペレーティングシステムに応じて、両方のプロセスに変更が表示される特別な「共有」メモリを取得できます。 – EOF