我正在使用 supervisord 来生成和管理我用 C 语言为 linux 目标编写的 FastCGI 应用程序。我有一个信号处理程序,可以在收到 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)
我的 supervisord.conf 文件中有以下内容
stopsignal=INT
我假设 supervisord 在调用 shutdown 命令时发出“停止信号”,所以我将 INFO 语句作为我的应用程序没有响应 supervisord 发出的 SIGINT 的指示。
如何调试 supervisord 和我的应用程序之间传递的信号?