zoukankan      html  css  js  c++  java
  • 2.2 进程控制之进程共享

    目标:熟悉父子进程之间资源共享


    fork函数执行之后,父子进程之间有哪些相同和不同之处呢?

    -->相同处: 全局变量、.data.text、栈、堆、环境变量、用户ID、宿主目录、进程工作目录、信号处理方式...

    -->不同处: 1.进程ID 2.fork返回值 3.父进程ID 4.进程运行时间 5.闹钟(定时器) 6.未决信号集

     注意:子进程复制了父进程0-3G用户空间内容,以及父进程的PCB,但pid不同,父子进程间遵循读时共享写时复制的原则。

    例:共享全剧变量

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <unistd.h>
     4 int a = 10;            //全局变量,位于.data区 
     5 int main(void)
     6 {
     7     pid_t pid;
     8     pid = fork();
     9 
    10     if(pid == 0){      //子进程
    11         a = 1000;
    12         printf("child, a = %d
    ", a);
    13     } 
    14     else {
    15         sleep(1);    //父进程,保证子进程先运行
    16         printf("parent, a = %d
    ", a);
    17     }
    18     return 0;
    19 }

     编译执行结果:

     从结果可以验证父子进程间遵循读时共享写时复制的原则

  • 相关阅读:
    NLB网路负载均衡管理器详解
    Nginx配置详解
    Nginx代理功能与负载均衡详解
    .Net使用RabbitMQ详解
    说说面向服务的体系架构SOA
    .Net中的RealProxy实现AOP
    搭建自己的Nuget服务器
    VMware虚拟网络连接模式详解(NAT,Bridged,Host-only)
    JsonUtils
    Linux三剑客
  • 原文地址:https://www.cnblogs.com/lxl-lennie/p/10213038.html
Copyright © 2011-2022 走看看