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

处理。

你可能感兴趣的:(process)