我發現的唯一好方法是:import sysimport ostry: os.kill(int(sys.argv[1]), 0) print "Running"except: print "Not running"但這可靠嗎?它適用于每個流程和每個發行版嗎?
3 回答

汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
畢竟,Mark的答案就是解決之道,這就是/ proc文件系統在那里的原因。對于一些復制/粘貼的東西:
>>> import os.path
>>> os.path.exists("/proc/0")
False
>>> os.path.exists("/proc/12")
True

慕妹3146593
TA貢獻1820條經驗 獲得超9個贊
它可以在任何POSIX系統上運行(盡管/proc正如其他人所建議的那樣,查看文件系統會更容易,如果您知道它將存在的話)。
但是:os.kill如果您無權發信號通知過程,也可能會失敗。您將需要執行以下操作:
import sys
import os
import errno
try:
os.kill(int(sys.argv[1]), 0)
except OSError, err:
if err.errno == errno.ESRCH:
print "Not running"
elif err.errno == errno.EPERM:
print "No permission to signal this process!"
else:
print "Unknown error"
else:
print "Running"
添加回答
舉報
0/150
提交
取消