Как завершить процесс, созданный Python Popen

Git не отслеживает папки, только файлы, поэтому, если вы игнорируете все в папке, Git не будет ничего отслеживать. Вы можете добавить файл .gitignore в каждый каталог (application/cache, application/cache/folder, application/cache/folder/onemorefolder/) со следующим содержимым:

*
!.gitignore

Затем вы можете добавить эти каталоги, и только Файл .gitignore в каждом каталоге будет добавлен, но это означает, что теперь будут отслеживаться каталоги (т. е. создаются при клонировании).

0
задан Dipali Sakle Systematix 13 July 2018 в 13:10
поделиться

2 ответа

В API подпроцесса python 3 можно убить ребенка, вызвав

Popen.kill()

, который является псевдонимом для Popen.terminate() в Windows ( см. здесь ). Если это не сработает, вы можете попробовать

os.system("TASKKILL /F /PID [child PID]")

Вы можете получить PID ребенка с помощью Popen.pid()

0
ответ дан Bacon 17 August 2018 в 12:48
поделиться
  • 1
    благодаря! Но почему proc.pid дает значение, которое отличается от PID в диспетчере задач? – Albert 13 July 2018 в 13:45

Вы можете попробовать использовать окна, чтобы убить процесс.

command = "Taskkill /IM calc.exe /F"
proc = subprocess.Popen(command)

или

import os
os.system("taskkill /im Calculator.exe /f")

Если вы хотите быть уверенным, попробуйте рекурсивное убийство !!

def kill_process(proc):
    # Check process is running, Kill it if it is,

    # Try to kill the process - 0 exit code == success

    kill = "TaskKill /IM {} /F".format(proc)

    res = subprocess.run(kill)

    if res == 0:
        return True  # Process Killed
    else:
        kill_process(proc)  # Process not killed repeat until it is!

kill_process('Calculator.exe')
0
ответ дан johnashu 17 August 2018 в 12:48
поделиться
  • 1
    Хорошо, спасибо! Я попробую в понедельник и напишу вам мой результат. P.S, я только что попытался выполнить код, написанный на Windows 7 с proc.terminate (), и он работает! Вы знаете, почему это не на Win10? – Albert 13 July 2018 в 13:07
  • 2
    Вероятно, что-то связано с правами доступа пользователя. Можете попробовать запустить скрипт как admin. У меня была такая же проблема в Windows 10, и мне пришлось написать эту функцию, которая выполняет эту работу. – johnashu 13 July 2018 в 13:10
  • 3
    Я попытался запустить как Admin, он также не дал никаких результатов :( – Albert 13 July 2018 в 13:13
  • 4
    Это не помогло. Пила в диспетчере задач, что процесс был создан с именем «Calculator.exe»; (не calc.exe). Я попытался реализовать "proc.terminate () & quot; еще раз - он работает без ошибок, но когда скрипт завершается, калькулятор все еще работает :( – Albert 16 July 2018 в 05:58
  • 5
    Что произойдет, если вы запустите TaskKill /IM calc.exe /F из cmd? (Также попробуйте Calculator.exe) – johnashu 16 July 2018 в 06:41
Другие вопросы по тегам:

Похожие вопросы: