日期:2014-05-16  浏览次数:20711 次

请高手指教。。。
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);了么,为什么还会返回去执行前面已经执行过的代码呢,或者是没退出的子进程执行的呢????????

------解决方案--------------------
不是父进程返回去,而是子进程执行完循环后继续执行的结果。