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,它内部实现了所需的错误处理与中断

处理。

posted @   梁星  阅读(263)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
Mobile and Web Analytics
点击右上角即可分享
微信分享提示