首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

请高手指教。解决方法

2012-02-05 
请高手指教。。。C/C++ codeif((pidfork())0){perror(fork)exit(5)}else if(pid0){for(i0i5i++){

请高手指教。。。

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

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

热点排行