• 进程与进程间通信(1)


    1.进程

    进程(process) 是一个已经开始执行但还没终止的程序实例。 Linux 系统下使用 ps 命令可以查看到当前正在执行的进程。每个进程包含有进程运行环境、内存地址空间、进程ID、和至少一个被称为线程的执行控制流等资源。同一个程序可以实例化为多个进程实体。操作系统中所有进程实体共享着计算机系统的 CPU、外设等资源。

    2.进程状态

    D: 不可中断的深度睡眠状态,处于这种状态的进程不能响应异步信号;
    R: 进程处于运行态或就绪状态, 只有在该状态的进程才可能在 CPU 上运行。而同一时刻可能有多个进程处于可执行状态;
    S:可中断的睡眠状态,处于这个状态的进程因为等待某种事件的发生而被挂起。;
    T: 暂停状态或跟踪状态;
    X: 退出状态,进程即将被销毁;
    Z: 退出状态,进程成为僵尸进程。

     

     

     

     

     

     

     

     

     

    3.main函数

    进程创建后通常需要调用 exec 族函数来装载程序可执行映像,并在完成装载后调用程序的 main()函数。

    参数 argc 是命令行参数的数目;

    参数 argv 是指向参数的各个指针所构成的数组。argv[0]为程序的名称,后续的数组元素组成参数列表, argv[argc]值为 NULL

    原型3 的 env 参数指向环境变量字符串的数组 

    4.进程ID

      进程在创建时,内核会为之分配一个进程ID用来标识当前的进程,类型为 pid_t 的整数并保持同一时刻是唯一值,它最大值为pid_max 。当进程退出时,它的进程 ID 可回收循环使用。

    getpid()函数可以获取当前进程的进程 ID

    5.父进程与子进程

    进程创建时,创建进程为新进程的父进程,新进程是创建进程的子进程。 getppid()函数获取父进程的 PID

    6.UID,GID

    UID:用户ID,GID:用户的组ID。使用 id 命令可以列出用户的 id当执行一个程序时,该程序将获取当前用户的 UID GID 作为进程的权限。

    7.环境变量

    (1)通过 main()函数的第 3 个参数 env 获取。 数组最后一个元素为 NULL 

    2) 通过 environ 全局变量获取。 在加载进程的时候,系统会为每一个进程复制一份 系统环境变量副本, 并保存在全局变量 environ 中。 

    3)通过 getenv()函数获取。 Linux 系统提供 getenv()setenv()等函数来操作环境变量,

    8.标准IO


  • 相关阅读:
    关于BigDecimal转String的准确性问题
    MyBatis动态Sql之if标签的注意事项
    Servlet与通信协议概述
    关于ThreadLocal的那些事
    MyBatis 中 @Param 注解的四种使用场景
    Mybatis中#{}与${}的区别
    如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
    jsp有哪些动作?作用分别是什么?
    forward 和redirect的区别 ?
    Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别?
  • 原文地址:https://www.cnblogs.com/xiaoli94/p/11231460.html
Copyright © 2020-2023  润新知