2015-05-11 3 views
2

У меня есть питон скрипт, который я открываю три исполняемых файлов следующим образом:Как убить процесс в python 2.5 на 64-битной платформе Windows?

Aa=subprocess.Popen([r"..\location\learning\A.exe"]) 
Bb=subprocess.Popen([r"..\location\learning\new\B.bat"]) 
Cc=subprocess.Popen([r"..\location\learning\new\B.bat"]) 

Все три файла становятся открыт. Теперь следующий шаг я хочу убить эти три открыл modules.So, во-первых, я пытался убить «Аа» следующим образом:

PROCESS_TERMINATE= 1 
k = ctypes.windll.kernel32klll 
handle = k.OpenProcess(PROCESS_TERMINATE, False,Aa.pid) 
k.TerminateProcess(handle, -1) 
k.CloseHandle(handle) 

Но после добавления этих строк части «Аа» трех модулей «Bb» и «Cc» они не открываются. Итак, я хочу знать какое-то чистое решение, чтобы, во-первых, все три модуля исполнялись, а затем через некоторое время они закрывались. Как, я использую python 2.5 на 64-битной платформе Windows, поэтому любезно предложите решение соответственно.

+0

os.kill должно быть достаточно. –

+0

Вы пытались вызвать команду '' taskkill' '(http://stackoverflow.com/a/10830753/4279) - похоже, вам нужно убить все дерево, а не только один подпроцесс? – jfs

+0

@ DarceyMckelvey поддержка os.kill в Windows была добавлена ​​в 2.7 –

ответ

0

Процесс, возвращаемый subprocess.Popen(), имеет метод terminate(), чтобы убить дочерний процесс с Python 2.6. Чтобы использовать это, вам придется обновить Python, установить или установить две версии Python параллельно.

Но лучший способ, как правило, выяснить, как вы можете сказать, что этот процесс останавливается и использует это. Многие процессы останавливаются, когда вы отправляете им определенный стандартный ввод или когда вы закрываете трубы, созданные Popen.

 Смежные вопросы

  • Нет связанных вопросов^_^