进程ID(英语:processID)、PID)是大多数作业系统的核心用于唯一标识进程的一个数值。(简言之,就是进程的绰号。)这一数值可以作为许多函式调用的参数,以使调整进程优先权、kill(命令)进程之类的进程控制行为成为可能。
基本介绍
- 中文名:进程标识符(进程ID)
- 外文名:process identifier
系统描述
在类UNIX作业系统中,新进程都衍自系统调用fork函式(英语:Fork (operating system))。fork()调用会将子进程的PID返回给父进程,使其可以之指代子进程,从而在需要时以之为函式参数。例如,若以子进程PID为参数调用waitpid(),可使父进程以休眠状态等待子进程结束;若以之为参数调用kill()(英语:kill (command)),便可结束对应子进程。
在各PID中,较为特别的是0号PID和1号PID。PID为0者为交换进程(英语:swapper),属于核心进程,负责分页任务;PID为1者则常为init进程,主要负责启动与关闭系统。值得一提的是,1号PID本来并非是特意为init进程预留的,而init进程之所以拥有这一PID,则是因为init即是核心创建的第一个进程。不过,现今的许多UNIX/类UNIX系统核心也有以进程形式存在的其他组成部分,而在这种情况下,1号PID则仍为init进程保有,以与之前系统保持一致[1]。
PID的分配机制则因系统而异,一般从0开始,然后顺序分配,直到达到一个最大值(亦因系统而异),而后又从300开始重新分配;在Mac OS X和HP-UX下,则是由100开始重分配。在分配PID时,若遇到已分配的PID,则直接跳过,继续递增查找下一个可分配PID。
微软系统
Microsoft Windows系列作业系统提供了一系列API,以使开发者可以获取相关PID,如用于获取当前进程PIDGetProcessId()[2]、返回其他进程PID的GetProcessId()
PID档案
有些长时间运行的进程(如MySQL的守护进程)会将自己的PID写入一个档案,以使其他进程可寻获之。