服务器接收不到信号,Windows上的子进程未接收到信号(SIGTERM)

我有一个启动子进程的服务器,我可以设法做一个send_signal(SIGTERM)来终止进程。但并不优雅。

如果我从shell调用我的子进程(即作为一个单独的进程),定义的信号处理程序将正常地启动和退出。在

在服务器.py:

(所以。。在另一个脚本中,我首先调用start_app(),然后是{}def start_app():

app = subprocess.Popen("python app.py")

def exit_app():

p = app.poll()

if p==None:

print("Subprocess is alive") # debug

app.send_signal(signal.SIGTERM)

在应用程序副本在

^{pr2}$

再说一次,如果我打电话的话应用程序副本从shell发送一个SIGTERM信号,我得到一个跟踪Terminate signal received,应用程序关闭。

但什么时候应用程序副本是由服务器启动的,我在服务器中调用exit_app,我得到一个跟踪Subprocess is alive(来自服务器.py)app被杀死,但信号没有被app的signalhandlerexit_signal_handler

编辑:

似乎send_signal()没有向子进程发送信号,因为子进程捕获了信号。它发送一个信号,要求对子进程执行操作:def send_signal(self, sig):

"""Send a signal to the process

"""

if sig == signal.SIGTERM:

self.terminate()

elif sig == signal.CTRL_C_EVENT:

os.kill(self.pid, signal.CTRL_C_EVENT)

elif sig == signal.CTRL_BREAK_EVENT:

os.kill(self.pid, signal.CTRL_BREAK_EVENT)

else:

raise ValueError("Unsupported signal: {}".format(sig))

这也许能回答我的问题,但我还是不谈。。。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值