mluebke कोड 100% सही नहीं है; किल () भी EPERM (पहुंच से वंचित) को बढ़ा सकता है जिस स्थिति में जाहिर है कि एक प्रक्रिया मौजूद है। यह काम करने वाला है:
(जेसन आर। कोम्बस की टिप्पणियों के अनुसार संपादित)
import errno
import os
def pid_exists(pid):
"""Check whether pid exists in the current process table.
UNIX only.
"""
if pid < 0:
return False
if pid == 0:
# According to "man 2 kill" PID 0 refers to every process
# in the process group of the calling process.
# On certain systems 0 is a valid PID but we have no way
# to know that in a portable fashion.
raise ValueError('invalid PID 0')
try:
os.kill(pid, 0)
except OSError as err:
if err.errno == errno.ESRCH:
# ESRCH == No such process
return False
elif err.errno == errno.EPERM:
# EPERM clearly means there's a process to deny access to
return True
else:
# According to "man 2 kill" possible error values are
# (EINVAL, EPERM, ESRCH)
raise
else:
return True
जब तक आप pywin32, ctypes या C एक्सटेंशन मॉड्यूल का उपयोग नहीं करते हैं, आप विंडोज पर ऐसा नहीं कर सकते। यदि आप बाहरी देयता से निर्भर हैं तो आप psutil का उपयोग कर सकते हैं :
>>> import psutil
>>> psutil.pid_exists(2353)
True