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;

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

  • 相关阅读:
    C
    C
    你好,欢迎到这里来
    数组专题
    web前端的性能优化
    MornUI 源码阅读笔记
    application tips
    [转]就这样,创建了自己的运行时共享库(RSL)
    [转]glew, glee与 gl glu glut glx glext的区别和关系
    编码相关了解
  • 原文地址:https://www.cnblogs.com/chenkeyu/p/7081228.html
Copyright © 2011-2022 走看看