请高手指教。。。
- C/C++ code
if((pid=fork())<0){ perror("fork"); exit(5); } else if(pid==0){ for(i=0;i<5;i++){ P(semid,1); for(j=0;j<3;j++){ sleep(1); time(&now); printf("%s",ctime(&now)); } V(semid,0); } /*exit(0);***********************/ } for(i=0;i<5;i++){ P(semid,0); printf("current time:\n"); V(semid,1); } wait(NULL); return 0;
加exit(0);这行后,一切正常。若注释掉exit(0);除五次正常输出后,最后还会输出一行current time:然后停在那不退出来(等子进程退出)
问题:父进程不是for循环五次就停在wait(NULL);了么,为什么还会返回去执行前面已经执行过的代码呢,或者是没退出的子进程执行的呢????????
不是父进程返回去,而是子进程执行完循环后继续执行的结果。