读书人

请高手指教。解决方法

发布时间: 2012-02-05 12:07:14 作者: rapoo

请高手指教。。。

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

[解决办法]
不是父进程返回去,而是子进程执行完循环后继续执行的结果。

读书人网 >UNIXLINUX

热点推荐