我有以下代码。我想$pub->close
在starman服务器接收到HUP信号时调用该方法。
- 我怎么知道子进程结束了?
- 我可以使用 END {} 块吗?我试过这个,它似乎在 plackup 重新启动时工作(在编辑之后)。我用starman试过这个。我发送了 HUP 信号,但孩子们没有重新启动。
- 我应该为 HUP 安装信号处理程序吗?这是如何运作的?
我想在孩子重新启动之前进行清理,如果我不这样做,子进程将阻塞。
这是我使用的 .psgi 文件。
use ZMQ;
use ZMQ::Constants ':all';
use Plack::Builder;
our $ctx = ZMQ::Context->new(1);
my $pub = $ctx->socket(ZMQ_PUB);
$pub->bind('tcp://127.0.0.1:5998');
# I want to close the socket and terminate the context
# when the server is restarted with kill -HUP pid
# It seems the children won't restart because the sockets isn't closed.
# The next two lines should be called before the child process ends.
# $pub->close;
# $ctx->term;
builder {
$app
}