Linux操作系统中为了区分每一个进程,为每个进程分配一个唯一的进程号,也称为进程ID。进程 ID 是保存在进程的 PCB 中,属于进程的内核资源。
每个进程的进程 ID 虽然是唯一的,但是进程 ID 是可以重用的,当一个进程被终止时,其所有的资源将会被释放,也包括进程 ID。当系统再次创建一个新的进程时,可以为其分配已经被释放的进程 ID 。由于操作系统采用延迟重用算法,所以为刚创建的进程分配的进程 ID通常不会是刚被释放的进程 ID 。
操作系统中有些进程的进程 ID 是固定的,比如 调度进程的进程 ID 为0,init 进程的进程 ID 为1。这些进程都是特殊的进程。
======================================================================
前面提到了,进程 ID 保存在进程的 PCB 中,属于进程的内核资源,所以在用户空间中是无法直接获取到进程 ID 的,必须要通过系统调用来获取。下面介绍几个系统调用
函数原型:
返回值:
- 这个函数不会出错,总会返回进程的进程 ID
函数原型:
返回值:
- 同样不会出错,总会返回此进程的父进程 ID
函数原型:
返回值:
- 这两个函数也不会出错,总是返回进程的实际用户 ID 和进程的有效用户 ID
注意:这几个系统调用中的进程 ID 使用了pid_t 类型,用户 ID 使用了 uid_t类型。以后在写程序的时候应该也要使用这种类型来定义变量。
时间: 2024-10-21 05:25:45