• fork函数


    据介绍,fork函数可以作为进程的复制方法,一般情况下,fork函数的子进程和父进程共享一个代码段,而数据段、堆栈段由父进程复制到子进程,但是事实情况下为,fork函数的子进程只复制了关于该几个段的寄存器地址,只是在子进程更改数据的时候才更改父进程。(来自 Linux Programmer's Guide)

    一个非常有趣的是if和esle将扮演一个非常特殊的角色,而不是我们平时所认为的单一执行的方式了。


    pid_t childpid;

    childpid = fork();
    if(-1 == childpid )
     {
        perror("fork");
        exit(1);
     }

     if(0 == childpid)  //now in child process
    {
       printf("now in child process.\n");
       exit(1);  // you should exit(1) in child process, so that it could release resource inherit from
                    // parent process.
    }
     else // in parent process
    {
        printf("now in parent process.\n");
    }

    当fork函数成功返回0时,子进程被拷贝,父进程也执行,因此会依顺序输出:
           now in child process.
           now in parent process.

    也就是if和esle都被执行了,虽然在同一个进程中,执行的只有if或else,但是在两个进程中,同时被执行,一点特殊处,记下来,看看。 
    /*
    *
    * Copyright (c) 2011 Ubunoon.
    * All rights reserved.
    *
    * email: netubu#gmail.com replace '#' to '@'
    * http://www.cnblogs.com/ubunoon
    * 欢迎来邮件定制各类验证码识别,条码识别,图像处理等软件
    * 推荐不错的珍珠饰品,欢迎订购 * 宜臣珍珠(淡水好珍珠) */
  • 相关阅读:
    day06-for循环补充,可变与不可变类型,数字,字符串和列表的使用
    day05-while循环和for循环的使用
    day04-运算符,流程控制之if和input()用户交互功能
    day03-变量,基本数据类型,基本运算符
    day02-python和计算机介绍2
    day01-python和计算机介绍1
    仓库
    四则运算
    异常处理
    动手动脑3
  • 原文地址:https://www.cnblogs.com/ubunoon/p/2058950.html
Copyright © 2020-2023  润新知