linux 高级程序设计
- linux下所有的进程都由进程init PID为1 直接或间接创建
- 需要把每个程序看作是一个面向过程的c语言程序,因为再进程中有你可能创建多个子进程,而这些进程是并发执行的。
fork 函数调用成功之后,将为子进程申请PCB和用户内存空间。子进程会复制父进程的几乎所有信息,再用户空间将复制父亲用户空间所有数据(代码段、数据段、BSS、堆、栈),负债父亲进程内核空间PCB中额绝大多数信息。子进程从父进程继承下列属性:有效用户/组号,进程号组、环境变量、对文件的执行时关闭标志、信号处理方式设置、信号屏蔽集合、当前工作目录、根目录、文件模式掩码、文件大小限制、打开的文件描述符。
子进程在创建后和父进程同时进行,竞争系统资源,谁先执行由调度算法决定。子进程的执行位置为fork返回位置。