浅析fork函数

作者: cpp加油站 | 来源:发表于2018-08-08 11:49 被阅读8次

1、fork函数的原型

pid_t fork();
返回值:若成功调用一次则返回两个值,子进程返回0,父进程返回子进程的进程id,否则,出错返回-1.

2、调用fork时发生的事

一个进程调用fork()函数后,系统先给新的进程分配资源,例如数据空间、堆、栈等资源。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。所以子进程拥有独立的地址空间。
创建新进程成功后,系统中出现两个基本完全相同的进程,这两个进程执行没有固定的先后顺序,哪个进程先执行要看系统的进程调度策略。

3、fork可能出错的原因

  • 当前进程数量已经达到了系统规定的上限;
  • 系统内存不足;

4、什么是写时复制

现在的linux内核在实现fork函数时,往往在创建子进程时并不立即复制父进程的数据段和堆栈段,此时父进程和子进程共享内存,只有当父进程或者子进程修改了内存内容时才会去复制父进程的数据段和堆栈段,并给子进程分配进程空间,将父进程的内容复制过来,然后继续后面的操作,这个就叫做写时复制。

相关文章

  • 浅析fork函数

    1、fork函数的原型 pid_t fork();返回值:若成功调用一次则返回两个值,子进程返回0,父进程返回子进...

  • 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中创建一个新...

网友评论

    本文标题:浅析fork函数

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