In Linux, to judge whether a PID corresponding process exists, you can judge it as follows
#! /usr/bin/env python import os def check_pid(pid): try: os.kill(pid,0) except OSError: return False else: return True if __name__ == "__main__": print check_pid(22467)
Returns True if the PID exists in the system, False otherwise.
Why does the zero signal occur to the corresponding Pid process (in fact, there is no such signal. kill -l can confirm that there is no signal of this number) can determine whether the process corresponding to the Pid exists?
In linux system, man manual helps us.
man 2 kill intercepts the following part
KILL(2) Linux Programmer's Manual KILL(2) NAME kill - send signal to a process SYNOPSIS #include <sys/types.h> #include <signal.h> int kill(pid_t pid, int sig); Feature Test Macro Requirements for glibc (see feature_test_macros(7)): kill(): _POSIX_C_SOURCE DESCRIPTION The kill() system call can be used to send any signal to any process group or process. If pid is positive, then signal sig is sent to the process with the ID specified by pid. If pid equals 0, then sig is sent to every process in the process group of the calling process. If pid equals -1, then sig is sent to every process for which the calling process has permission to send signals, except for process 1 (init), but see below. If pid is less than -1, then sig is sent to every process in the process group whose ID is -pid. If sig is 0, then no signal is sent, but existence and permission checks are still performed; this can be used to check for the existence of a process ID or process group ID that the caller is permitā ted to signal. For a process to have permission to send a signal, it must either be privileged (under Linux: have the CAP_KILL capability in the user namespace of the target process), or the real or effective user ID of the sending process must equal the real or saved set-user-ID of the target process. In the case of SIGCONT, it suffices when the sending and receiving processes belong to the same session. (Historically, the rules were different; see NOTES.)