• 0

كيف أتأكد من وجود عملية معينة عن طريق pid في بايثون؟

حصلت على رقم pid لعملية معينة عن طريقة دالة getpid() من os، وأريد التأكد من وجود هذه العملية بعد مدة معينة، فما الطريقة الصحيحة للتأكد من ذلك؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يوجد العديد من الطرق لفعل ذلك بناءا على النظام الذي تستخدمه فإذا كنت تستخدم نظام لينكس فيمكنك في هذه الحالة تمرير رقم pid و 0 إلى دالة kill من os فإذا تم إصدار خطأ من نوع OSError فهذا يعني أن العملية غير موجود والعكس صحيح كما في المثال التالي:

import os

def check_pid(pid):        
    try:
        os.kill(pid, 0)
    except OSError:
        return False
    else:
        return True


أما إذا أردت طريقة تعمل على جميع الأنظمة فيمكنك في هذه الحالة استخدام دالة pid_exists() من وحدة psutil الذي سترجع true إذا كانت العملية موجودة كما في المثال التالي:
 

import psutil
pid = 162732
if psutil.pid_exists(pid):
    print "exists"
else:
    print "doesn't exist"

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن