zoukankan      html  css  js  c++  java
  • 关于操作系统中多个fork()会创建几个进程的理解

    最近在看操作系统的书,在讲到用fork()创建子进程时,有些地方一时迷惑,最终理解,特记录下来。如下:

    //创建一个子进程;
    #include "csapp.h"

    int main() {   
    fork();   
    printf("hello/n");   
    exit(0);}

    //打印出两个hello;不难理解,主程序一个,子程序一个;那么如果是两个fork()呢?

    #include "csapp.h" int main() {

      fork();  //位置1·

      fork();  //位置2

      printf("hello/n");

      exit(0); }

    //结果打印出4个hello;
    为什么会这样呢?
    原来在创建子程序时,子程序会得到父程序的一份拷贝,那么其中也包括下一条指令指针。具体如下:

    开始只有一个父进程;

    父进程执行完第一个fork()(这时下一条指令指针变成位置2)。
      创建出的一个子进程(这个进程也会从位置2开始执行)
        所以这个子进程会又创建一子子进程;(这时就有两个子进程了)

    父进程再执行第二个fork();
      又会创建一个子进程(这时就三个子进程了)
    加上父进程一共四个,所以输出4个hello world;

    这是我个人的理解,如果有大牛感觉这个理解有问题。请留言指点~谢谢

  • 相关阅读:
    基于jquery的web在线流程图设计器gooFlow
    angularJS学习笔记二
    angularJS学习笔记一
    JavaScript作用域链详解
    图片查看器(可拖拽,缩放,轮播)
    小议window.event || ev
    Vue安装准备工作
    让VS2013添加新类时自动添加public关键字
    win10太垃圾,真的不好用。
    Bind 和 ScaffoldColumn[转]
  • 原文地址:https://www.cnblogs.com/chenkeyu/p/7081228.html
Copyright © 2011-2022 走看看