掌握Linux进程控制的精髓:《Linux系统编程、网络编程》第5章要点解析

需积分: 16 2 下载量 49 浏览量 更新于2024-11-08 收藏 13KB ZIP 举报
资源摘要信息:"《Linux系统编程、网络编程》第5章 进程控制" 1. 进程与程序: 进程是正在运行的程序的实例,它是系统进行资源分配和调度的一个独立单位。程序是存储在磁盘上的可执行文件,而进程则是该程序在内存中的实际运行状态。 2. 进程PID与三个特殊进程: 进程标识符(PID)是系统分配给每个进程的唯一标识号。在Linux中,有三个特殊的进程,分别是PID为0的进程调度进程(swapper),PID为1的init进程,以及PID为2的中断进程。 3. fork函数的作用: fork是一个系统调用,用于创建一个新进程,称为子进程,它是当前进程的副本。在Linux系统编程中,fork是进程创建的基石,它使得一个进程可以创建一个新的执行流程。 4. 父子进程对文件的共享: fork调用后,父子进程共享文件描述符表,但是每个进程有自己的地址空间和寄存器集合。父子进程通过文件描述符表共享打开的文件,从而实现文件的共享。 5. execve加载函数: execve是一个系统调用,用于在当前进程中加载并运行一个新程序。执行execve后,当前进程的地址空间被新程序替换,但进程的PID保持不变。 6. system函数: system是一个库函数,它提供了一个简单的界面来运行一个shell命令。在Linux系统编程中,system函数内部实际上使用了fork和execve,以及等待子进程结束的waitpid函数。 7. 进程的资源回收: 当进程结束时,系统需要回收该进程所占用的资源。这包括关闭所有打开的文件描述符,释放内存等。在父进程的wait或waitpid调用中等待子进程结束,从而完成资源的回收。 8. wait函数: wait系统调用用于暂停父进程的执行,直到它的某个子进程结束。wait函数可以获取子进程的退出状态,并且从系统中删除已结束的子进程记录。 9. 进程状态: 进程可能处于不同的状态,如运行、就绪、阻塞等。Linux通过进程控制块(PCB)来管理进程的状态信息。 10. Java进程: Java进程是运行Java字节码的进程。在Linux环境下,Java进程的创建和管理遵循Linux进程控制的一般规则。 11. 进程关系: Linux中的进程可以通过进程组和会话来组织。一个进程组包含多个进程,而一个会话则是一组进程组的集合。 12. 守护进程: 守护进程是在后台运行的、没有控制终端的进程。它们通常在系统启动时启动,并在系统关闭时结束。 13. return/exit/_exit: 在C程序中,return通常用于从函数返回,而exit是库函数,用于终止进程。_exit是系统调用,用于终止进程,它比exit更底层,并且不执行一些标准的清理工作。 14. 环境变量表: 环境变量表是运行时环境的一部分,存储了进程运行所需的各种环境信息,如PATH、HOME、SHELL等。 15. 环境变量API: Linux提供了多个API函数,如getenv、setenv和unsetenv,用于获取、设置和删除环境变量。 16. C程序的内存空间布局: C程序的内存空间通常包括代码段、数据段、堆和栈。代码段存储程序代码,数据段存储全局变量,堆用于动态内存分配,栈用于存储局部变量和函数调用帧。 17. C库: C库是C程序运行所依赖的标准函数库,包括函数如printf、scanf、malloc等。Linux中的C库通常指的是glibc,它是GNU项目的C库实现。