小编Hik*_*ast的帖子

使用 supervisord 将信号传递到托管进程

我正在使用 supervisord 来生成和管理一个 FastCGI 应用程序,我正在用 C 为 Linux 目标编写该应用程序。我有一个信号处理程序,可以在收到 SIGINT 时优雅地退出我的应用程序。我已经通过在终端窗口中运行应用程序并发出 Ctrl-C 退出来验证信号处理程序是否按预期工作。

当向 supervisord 发出“关闭”命令(通过 supervisorctl)时,supervisord 似乎无法在不调用 SIGKILL 的情况下强制应用程序退出:

2010-08-20 10:02:49,661 INFO waiting for cse to die
2010-08-20 10:02:52,665 INFO waiting for cse to die
2010-08-20 10:02:55,669 INFO waiting for cse to die
2010-08-20 10:02:58,672 INFO waiting for cse to die
2010-08-20 10:02:59,673 WARN killing 'cse' (2031) with SIGKILL
2010-08-20 10:02:59,674 INFO stopped: cse (terminated by SIGKILL)
Run Code Online (Sandbox Code Playgroud)

我的 supervisord.conf 文件中有以下内容

stopsignal=INT
Run Code Online (Sandbox Code Playgroud)

我假设 supervisord 在调用关闭命令时发出“停止信号”,因此我将 INFO 语句视为我的应用程序没有响应由 supervisord 发出的 SIGINT …

signals sigkill sigint supervisord

5
推荐指数
1
解决办法
3612
查看次数

标签 统计

sigint ×1

sigkill ×1

signals ×1

supervisord ×1