2011-01-12 10 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]、[ソース](http://hg.svartech.com/debian/slay/raw-file/tip/slay)の実装を確認したい場合があります。 – plundra

答えて

1

プロセスが実行中であるかどうかをチェックするデフォルトの方法は、kill -0 PIDを使用することです(これはPOSIX互換もあります)。os.killをシグナルとして使用することができます、プロセスが死んでいる場合は、それが生きている場合は、例外をスローする必要があります。

+0

このヒントありがとうございます。私はそれを試してみましょう。 – Ionut

1

はあなたがプロセスを見つけるためにやった同じことを行うことはできませんありがとう!その関数は0を返します。

関連する問題