سؤال

لدي اختبار البرنامج النصي الذي يحتاج إلى فتح عملية (الزعيمة server), نفعل بعض الاشياء التي سوف اتصل فتح عملية للحصول على المعلومات ، و عندما يتم ذلك سوف تحتاج إلى إغلاق عملية التراجع.كل هذا جزء من الاختبار الآلي على ملقم التدريج.

في بيثون 2.6 يمكنك القيام بذلك:

pyro_server = subprocess.Popen(['python', 'pyro_server.py'])
# Do stuff, making remote calls to the Pyro server on occasion
pyro_server.terminate()

للأسف أنا مؤمن في بيثون 2.4 هنا في العمل لذلك أنا لم يكن لديك الوصول إلى هذه الوظيفة.وإذا كنت مجرد السماح سيناريو نهاية الدورة الخادم يعيش على.ما ينبغي أن تفعله ليغلق/قتل في تلك العملية من قبل البرنامج النصي المخارج ؟

هل كانت مفيدة؟

المحلول

  1. نسخ subprocess.py إلى python2.4 dist-حزم الدليل.فإنه يجب أن تعمل فقط كما انها بسيطة التفاف حول القديم popen المكتبة.

  2. على Popen كائن إنهاء وظيفة لا يفعل شيئا أكثر من الإجراءات التالية:

    استيراد نظام التشغيل, إشارة

    نظام التشغيل.قتل(pid, إشارة.SIGKILL)

pid هو عملية طفل هو معرف العملية.إشارة.SIGKILL هو رقم 9 و هو معيار unix قتل إشارة.يمكنك أن ترى كيف أن تفرخ subprocess والحصول على pid في بيثون 2.4 مع popen وحدة هنا:

نصائح أخرى

braincore: لاحظ أن OS.Kill غير متوفر على Windows في Python24، تحقق من المستندات.

حلاي لقتل عضو فرعي.POPEN كائن على Windows عند استخدام Python24 هو:

import os, subprocess
p = subprocess.Popen(...)
res = os.system('taskkill /PID %d /F' % p.pid)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top