Закрытие файла через модуль 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']
→ Ссылка