网站首页 文章专栏 读书笔记- fork()函数
读书笔记- fork()函数
编辑时间:2022-08-04 19:29:18 作者:Echosong 浏览量:17

 fork()函数的作用是创建一个子进程。pid = fork();

 代码示例如下:

 

```c

int main()

{

    pid_t pid;

    int x = 1;


    pid = fork(); //创建子进程

    if (pid == 0) {  /* Child */

        printf("child : x=%d\n", ++x); 

        exit(0);

    }

    printf("pid=%d\n", pid);

    /* Parent */

    printf("parent: x=%d\n", --x); 

    exit(0);

}


```

结果:


```c

parent: x=0

pid=29254

child : x=2

```

fork()进程有以下几个特点:


 1. 调用1次,返回2次。 一次是在父进程中执行,一次是在刚创建的子进程中执行。 pid为0,表示当前在子进程中。

 2. 并发执行。 父进程和子进程是并发运行的独立进程。 内核以任意方式交替执行,可能会先执行父进程,也可能会先执行子进程。  程序员应该避免猜测谁先执行来做一下逻辑处理。

 3. 拥有相同且独立的地址空间: 刚fork出的子进程和父进程拥有相同的用户栈、堆,变量。但他们相互独立的。 例如例子中:输出x的变量值,child自增1与parent自减1互不影响。





来说两句吧
最新评论