2011-01-12 37 views
0

我需要创建一个函数,可以终止用户拥有的所有进程并稍后启动几个进程。Python终止用户拥有的所有进程

我的主要问题是我无法确定如何检查是否所有进程都被终止,如果仍有正在运行的进程,要重试1-2次以杀死它们,然后返回错误。我只想使用python代码。

这里是我的代码:

import os 
import pwd 


def pkill(user): 
    pids = [] 
    user_pids = [] 
    uid = pwd.getpwnam(user).pw_uid 
# get all PID 
    for i in os.listdir('/proc'): 
     if i.isdigit(): 
      pids.append(i) 
# test if PID is owned by user 
    for i in pids: 
     puid = os.stat(os.path.join('/proc', i)).st_uid 
     if puid == uid: 
      user_pids.append(i) 
# print len(user_pids) 
# check of PID still exist and kill it 
    for i in user_pids: 
     if os.path.exists(os.path.join('/proc',i)): 
      try: 
       os.kill(int(i), 15) 
      except OSError: 

谢谢

+0

您可能想要检查`slay`的执行情况,[Source](http://hg.svartech.com/debian/slay/raw-file/tip/slay) – plundra 2011-01-13 11:27:23

回答

1

默认的方法来检查,如果一个进程正在运行,在Linux中(它的POSIX也兼容),是使用kill -0 PID,所以在这里你可以简单地做一个os.kill但以0作为信号,如果进程死了,它应该抛出一个异常,如果它活着,它不应该。

+0

谢谢您的提示。我会试一试。 – Ionut 2011-01-13 09:03:54

1

你不能做,你做同样的事情,找到进程?该函数应该返回0 ..

相关问题