进程ID

本页使用了标题或全文手工转换
维基百科,自由的百科全书

计算机领域,进程标识符(英語:process identifier,又略称为进程ID(英語:process ID)、PID)是大多数操作系统内核用于唯一标识进程的一个数值。这一数值可以作为许多函数调用的参数,以使调整进程优先级、杀死进程之类的进程控制行为成为可能。

类UNIX系统[编辑]

类UNIX操作系统中,新进程都衍自系统调用fork()fork()调用会将子进程的PID返回给父进程,使其可以之指代子进程,从而在需要时以之为函数参数。例如,若以子进程PID为参数调用waitpid(),可使父进程以休眠状态等待子进程结束;若以之为参数调用kill(),便可结束对应子进程。

在各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 XHP-UX下,则是由100开始重分配。在分配PID时,若遇到已分配的PID,则直接跳过,继续递增查找下一个可分配PID。

Microsoft Windows[编辑]

Microsoft Windows系列操作系统提供了一系列API,以使开发者可以获取相关PID,如用于获取当前进程PIDGetCurrentProcessId()[2]、返回其他进程PID的GetProcessId()[3]。在操作系统内部,进程ID与线程ID在同一个命名空间中,因此二者不会重合。

PID文件[编辑]

有些长时间运行的进程(如MySQL的守护进程)会将自己的PID写入一个文件,以使其他进程可寻获之。

参见[编辑]

参考资料[编辑]

  1. ^ ISRD Group. Basics Of Os Unix And Shell Programming. Tata McGraw-Hill Education. 2006. 
  2. ^ GetCurrentProcessId Function, Windows Developer Center, [2009-05-20], (原始内容存档于2009-06-27) 
  3. ^ ProcessId Function, Windows Developer Center, [2011-03-05], (原始内容存档于2011-03-22) 

本條目部分或全部内容出自以GFDL授權發佈的《自由線上電腦詞典》(FOLDOC)。