【发布时间】:2019-06-20 16:34:57
【问题描述】:
我想知道为什么我不能使用另一个函数终止从一个函数引发的批处理文件。
我要做的是通过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.')
我怎样才能杀死它?
【问题讨论】:
-
你也可以显示批处理文件吗?
-
@MauriceMeyer,当然,但它只是一个占位符 .bat,以便多次重复使用它:
title test.bat timeout /t 999 -
请edit您的问题包含您的批处理文件。我们需要足够的细节来确定一个合适的答案。
-
@double-beep,完成,但我不认为批处理文件的内容是真正的问题。
-
我也是,但如果你不把它发给我们,我们就不会这么认为。
标签: python subprocess terminate