zoukankan      html  css  js  c++  java
  • APUE学习笔记 Chapter 8. Process Control

    1.进程标识
        每个进程都有一个全局唯一的Process ID。通常进程0是swapper,进程1为init.
    2.进程创建
       在进程里创建子进程可以使用fork函数,通常fork函数失败的原因有,系统中的进程过多,当前用户创建的进程过多。
       子进程会复制父进程的:数据段,栈,堆,而代码段是两者共享的。
       父进程打开的文件会dup to 子进程,共享一份文件列表条目,因此会共享文件的偏移量。
       vfork函数不会复制父进程的内存,而且保证子进程先运行直到exec或者exit.
    3.进程相关
        每个进程退出之后,系统会为该进程保存一小部分的信息,叫做process account,保存在特定的文件中,linux保存在/var/account/pacct中,因为是结束时写入的,因此是以结束时间排序的。保存信息如: 进程ID,结束状态与总CPU时间。
        僵尸进程,是指进程结束时,其父进程并没有在等待它结束的进程。
        进程可以使用wait系列函数等待其他函数结束,并获取其返回值。

    4.运行其他进程
        在进程中,可以通过调用exec调用其他程序,exec会将当前进程的text,data,heap与stack都替换成新的程序。

    5.用户ID之间的关系:

      

    6.脚本文件

    shell在运行程序时,先以二进制可执行文件的形式进行运行,如果失败,再以脚本的形式进行运行。通常以脚本程序第一行指定的程序,并以其他部分作为命令行参数作为输入。

    7.system函数

    提供了一个快捷的方式进行其他程序的运行,相当于fork+exec+wait,它内部实现了所需的错误处理与中断

    处理。

  • 相关阅读:
    tar (child): gzip: Cannot exec: No such file or directory
    通过应用数字格式来修复文本格式的数字
    Logback
    Transport
    nginx note
    docker note
    k8s note
    spring boot properties
    Windows 和 Linux 的文件名
    安装配置ubuntu的web项目(新)
  • 原文地址:https://www.cnblogs.com/liangxing/p/1814891.html
Copyright © 2011-2022 走看看