浅析fork函数

fork函数的作用是:进程(父进程)可通过fork函数创建一个新的运行的子进程。

新创建的子进程几乎不完全与父进程相同。

可结合以下例子来理解(见《深入理解计算机系统》一书家庭作业8.11)

#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main() {
    int i;
    for(i=0;i<2;i++)
     fork();
    printf("hello\n");
    exit(0);
}

 其程序的流程图为:

 

 

运行结果为4个“hello”。

再看8.21

#include <stdio.h>
#include <unistd.h>


int main(){
    if(fork()==0){
        printf("a");
        fflush(stdout);
        exit(0);
    } else {
        printf("b");
        waitpid(-1,NULL,0);
    }

    printf("c");
    fflush(stdout);
    exit(0);
}

其程序的流程图为:

waitpid(-1,NULL,0)在程序中的作用为等待子进程结束。

 

 

其结果为:abc 或bac   

 

posted @ 2019-11-06 16:27  莲冬  阅读(294)  评论(0)    收藏  举报