• 1

كيف أنهي عملية باستخدام اسمها في بايثون؟

أريد إنهاء عملية معينة (مثلا firefox)، في العادة استخدم أوامر ps وkill لفعل ذلك على الطرفية، فهل توجد طريقة مشابهة لفعل ذلك في لغة بايثون؟

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


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

توجد عدة طرق لفعل ذلك على لينكس، فإذا أردت استخدام أوامر لينكس على بايثون فيمكنك استخدام عدة دوال لفعل ذلك كما في المثال التالي:

>>> import subprocess, signal
>>> p = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE)
>>> out, err = p.communicate()
>>> for line in out.splitlines():
...   if 'firefox' in line:
...     pid = int(line.split(None, 1)[0])
...     os.kill(pid, signal.SIGKILL)
...

أما لو أردت استخدام طريقة بايثونية لفعل ذلك فيمكنك استخدام دوال وحدة psutil حيث سندور في قائمة العمليات باستخدام جملة التكرار for مع دالة process_iter من وحدة psutil وسنبحث عن العملية المطلوبة فإذا وجدناها فسنحذفها:

import psutil

PROCNAME = "python.exe"

for proc in psutil.process_iter():
    # check whether the process name matches
    if proc.name() == PROCNAME:
        proc.kill()

 

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


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

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

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

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


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

تسجيل الدخول

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


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