Я пытаюсь завершить программу Python, которая сама использует множество потоков.
Если я не ошибаюсь, просто sys.exit() работает нормально .
Однако, чтобы избежать многих ошибок, в том числе потери ссылок на темы, я попробовал следующее:
subprocess.Popen(['start', 'cmd.exe', '/c', f'timeout 5&taskkill /f /fi "PID eq {os.getppid()}"'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Я подумал, что проблема в экранировании кавычек, поэтому попробовал несколько вещей, но безуспешно. Я сдался и сделал следующее, и все сработало отлично.
with open('exit_self.bat', 'w') as file:
file.write(f'timeout 5&taskkill /f /fi "PID eq {os.getppid()}"&del exit_self.bat')
subprocess.Popen(['start', 'cmd.exe', '/c', 'exit_self.bat'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Как это сделать без временных файлов? Что я пропустил? Для справки, я использовал /k вместо параметра /c cmd.exe, чтобы выйти из окна и проверить сообщение об ошибке в окне, оно выглядит следующим образом:
Waiting for 0 seconds, press a key to continue ...
ERROR: Invalid argument/option - 'eq'.
Type "TASKKILL /?" for usage.
Не уверен, поможет ли это, но я добавил echo, чтобы увидеть синтаксис выполняемой команды:
subprocess.Popen(['start', 'cmd.exe', '/k', 'echo', f'timeout 5&taskkill /f /fi "PID eq {os.getppid()}"'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Результат:
"timeout 5&taskkill /f /fi \"PID eq 3988\""
Подробнее здесь: https://stackoverflow.com/questions/790 ... or-windows
Экранирование кавычек в подпроцессах Python для Windows ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Экранирование двойных кавычек при отправке JSON в качестве аргумента в программе Python
Anonymous » » в форуме Python - 0 Ответы
- 46 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Шаблон Log4j2: экранирование двойных кавычек в значениях передаваемых сообщений
Anonymous » » в форуме JAVA - 0 Ответы
- 28 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Шаблон Log4j2: экранирование двойных кавычек в значениях передаваемых сообщений
Anonymous » » в форуме JAVA - 0 Ответы
- 31 Просмотры
-
Последнее сообщение Anonymous
-