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
আপনি উইন্ডোতে এটি করতে পারবেন না যদি আপনি পাইউইন 32, সিটিপস বা কোনও সি এক্সটেনশান মডিউল ব্যবহার না করেন। যদি আপনি কোনও বাহ্যিক লাইবের উপর নির্ভর করে ঠিক থাকেন তবে আপনি psutil ব্যবহার করতে পারেন :
>>> import psutil
>>> psutil.pid_exists(2353)
True