質問: int main(int argc, char*argc[]) { int val,x; x=10; switch(fork()){ case 0: printf("%d",x); exit(0); case -1; perror("child process"); break; default: x=100; wait(&val); } printf("%d",x); }
回答: こんにちは。 > > 処理後にaを印字します。ここでa=10のままであるため、プロセスの親子間でメモリの共有がされていないことを示す。 > > > これは子プロセス側の処理と思います。 この処理で共有していないことを示すには、親プロセスがx=100;を実行した後に子プロセス側でxを印字する必要がありますが、その待ちと印字処理がないようです。 子プロセスが親プロセスのなんらかの処理を待つこともできますが、結構面倒です。 子プロセスで行った修正が親プロセスで共有されていないことを確認する方が簡単ですよ。