Я работаю на Widnows 7 (32 бита), и это мой код:Python открытым и убить подпроцесс
def start_mviewer_broker(broker_path, test_name):
""" The function starts the broker server"""
try:
print("**** start_mviewer_broker ****")
p = subprocess.Popen('start python ' + broker_path + ' ' + test_name, shell=True)
return p
except:
print("**** start_mviewer_broker - EXCEPTION ****")
return 0
def kill_process(p):
""" The function kills the input running process"""
try:
print("**** kill_process ****")
p.terminate()
except:
print("**** kill_process - EXCEPTION ****")
pass
У меня есть несколько проблем. Единственным способом запуска моего подпроцесса является опция shell = True. Если я изменю этот параметр на False, подпроцесс не будет запущен.
Другая проблема заключается в том, что процесс убийства не убивает мой процесс, но не исключение.
Любая идея?
'start' - это не исполняемый файл, а команда cmd, поэтому вам всегда нужно использовать' shell = True' при его использовании. Возвращенный процесс - это не процесс python, а оболочка, используемая для создания его, поэтому его убийство не будет иметь нужного эффекта. Не используйте 'start'. – mata
Хорошо! Большое спасибо. Теперь, без запуска, все работает так, как я хочу. –