Мне интересно, почему я не могу завершить пакетный файл, полученный из одной функции, с помощью другой функции.
Я пытаюсь управлять пакетным файлом на моем выделенном компьютере с помощью Telebot .
Мой test.bat
файл:
title test.bat
timeout /t 999
Я написал отдельный модуль с функциями для запуска и уничтожения этого пакетного файла:
from os import path, kill
import subprocess
import signal
TEST_PATH = 'C:\\Users\\Administrator\\Desktop\\TEST\\'
un_proc = None
class sidim(object):
def __init__(self):
pass
def launch_test(self):
test_proc = subprocess.Popen([path.join(TEST_PATH,
'TEST.bat')],
creationflags=subprocess.CREATE_NEW_CONSOLE)
self.test_pid = test_proc.pid
def kill_test(self):
kill(self.test_pid, signal.SIGTERM)
И когда я запускаю пакетный файл с помощью команды /start_test
, он работает нормально, и пакетный файл запускается правильно:
import telebot
import sidimanager
bot = telebot.TeleBot('TOKEN')
sidim = sidimanager.sidim()
@bot.message_handler(commands=['start_test'])
def handle_start_test(message):
sidim.launch_test()
bot.reply_to(message, 'Test .bat file has been successfuly launched.')
Но когда я пытаюсь завершить этот пакет с помощьюкоманда /kill_test
командный файл игнорирует это и продолжает работать:
@bot.message_handler(commands='kill_test')
def handle_kill_test(message):
sidim.kill_test()
bot.reply_to(message, 'Test .bat file has been successfuly killed.')
Как я могу его убить?