美文网首页
fork函数

fork函数

作者: 烟花繁江尘辗 | 来源:发表于2021-07-05 17:39 被阅读0次
  • 含义

    fork函数将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。这两个进程中的线程继续执行,就像是两个用户同时启动了该应用程序的两个副本

  • 返回值

    有三种不同的返回值:
    1)在父进程中,fork返回新创建子进程的进程ID;
    2)在子进程中,fork返回0;
    3)如果出现错误,fork返回一个负值;

  • 例子

    #include <unistd.h>
    #include <stdio.h>
    int main ()
    {
            pid_t fpid; //fpid表示fork函数返回的值
            int count=0;
            fpid=fork();
            if (fpid < 0)
                    printf("error in fork!");
            else if (fpid == 0) {
                    printf("i am the child process, my process id is %d\r\n",getpid());
                    count++;
            }
            else {
                    printf("i am the parent process, my process id is %d\r\n",getpid());
                    count++;
            }
            printf("统计结果是: %d\r\n",count);
            return 0;
    }
    
    //结果
    i am the parent process, my process id is 27885
    统计结果是: 1
    i am the child process, my process id is 27886
    统计结果是: 1
    
  • 解析

fork函数之后,操作系统会复制一个与父进程完全相同的子进程,虽说是父子关系,但是在操作系统看来,他们更像兄弟关系,这2个进程共享代码空间,但是数据空间是互相独立的,子进程数据空间中的内容是父进程的完整拷贝,指令指针也完全相同,但只有一点不同,如果fork成功,子进程中fork的返回值是0,父进程中fork的返回值是子进程的进程号,如果fork不成功,父进程会返回错误。可以这样想象,2个进程一直同时运行,而且步调一致,在fork之后,他们分别作不同的工作,也就是分岔了

相关文章

  • fork() 与exec()的区分

    一、fork函数详解 函数原型: #include pid_t fork(void); fork函数是对整个进程进...

  • linux中fork()函数详解 (阅读笔记)

    linux中fork()函数详解(转载) 一、fork入门知识 在Linux中fork函数是非常重要的函数,它的作...

  • 系统编程:fork()、exec()前用fflush()刷新缓冲

    一、fork函数的使用异常 有一fork函数使用示例如下: 根据fork函数功能,我们可以在控制台上输出以下内容:...

  • Redis AOF重写的实现原理

    1. 操作系统基础 1.1. fork 当我们在一个程序的函数中调用 fork 函数时,fork 函数会创建一个子...

  • fork()函数

    fork函数是计算机程序设计中的分叉函数。返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记...

  • fork函数

    含义fork函数将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。这...

  • linux创建进程fork的方法步骤

    fork创建进程 函数原型如下 #include//必须引入头文件,使用fork函数的时候,必须包含这个头文件,否...

  • python 杂记

    进程 fork()函数Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用...

  • 一、多进程操作的基本函数

    1.fork 函数头文件及函数原型#include pid_t fork(void); 在Linux中创建一个新...

  • 分析Linux内核创建一个新进程的过程

    .ret_from_fork 分析fork函数对应的系统调用处理过程 启动保护fork命令的menuOS 设置断点...

网友评论

      本文标题:fork函数

      本文链接:https://www.haomeiwen.com/subject/cqeiultx.html