I'm wondering why I can't terminate a batch file raised from one function by using another function.
What I'm trying to do is to manage the batch file on my dedicated computer by Telebot.
My test.bat
file:
title test.bat
timeout /t 999
I've written a separated module with functions to start and kill this batch file:
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)
And when I'm starting the batch file using the /start_test
command it works fine and the batch file is launching properly:
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.')
But when I'm trying to terminate this batch with the /kill_test
command the batch file ignores that and continues to work:
@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.')
How can I kill it?