C语言 检查具有特定 pid 的进程是否存在和活动的方法是什么?



检查具有特定pid的进程是否存在和活动(不是僵尸(的方法是什么? 我正在使用带有gcc的Ubuntu Linux。

你应该明白,当你决定用这个过程做某事时,它可能早已不复存在(谷歌TOCTOU(。

无论如何,POSIX的方式是拨打kill (0, pid)并检查errnoESRCH的意思是"没有这样的过程",EPERM是"过程存在,但你不能发出信号"。

特定于Linux的方法是读取/proc目录。那里的条目对应于PID(也有一些条目不是数字,您可以忽略它们(。不过,并非所有 Linux 系统都使用/proc

如果您正在使用SELINUX,则可能有些过程您甚至不被允许知道,但是由于您无法对此做太多事情,因此甚至不必担心。

相关内容

最新更新