Закрытие файла через модуль OS
Мой python скрипт запускает другой файл python вот так
os.startfile(ABSOLUTE_PATH + 'bot.py')
и это работает, но я хочу реализовать возможность останавливать этот файл, через тот же скрипт, но я не могу это сделать с помощью os.system(command), потому что ввод в терминал во время выполнения программы не доступен, никаких команд вводить не получится, а завершение программы осуществляется только с помощью CNTRL + C ,как завершить python программу с помощью другой python программы ?
Ответы (1 шт):
Автор решения: Fox Fox
→ Ссылка
Не "через модуль ОS", а с помощью.
Один вариант:
import subprocess
# Предположим, что у вас есть PID программы, которую нужно завершить
pid = 12345 # Замените на реальный PID
# Выполняем команду завершения процесса
subprocess.run(["kill", str(pid)])
Другой вариант:
import os
import signal
# Предположим, что у вас есть PID (идентификатор процесса) программы, которую нужно завершить
pid = 12345 # Замените на реальный PID
# Отправляем сигнал завершения процесса
os.kill(pid, signal.SIGTERM)
Есть и третий (пример):
import psutil
p = psutil.Process(9891)
p.terminate()
Получить список процессов можно вот так:
import psutil
# Получаем список всех процессов
for proc in psutil.process_iter(["pid", "name", "cmdline"]):
try: print(f"PID: {proc.info["pid"]}, Name: {proc.info["name"]}, Cmdline: {proc.info["cmdline"]}")
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): pass
Теперь, например, я вижу в таком списке, что выполняется моя программа на Питон:
PID: 10732, Name: py.exe, Cmdline: ['C:\\Windows\\py.exe', 'D:\\PROJECTS\\RHYMES.PY\\rhymes.pyc']