gpt4 book ai didi

linux - 从 perl 守护进程中的信号处理程序返回一个值

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:55 25 4
gpt4 key购买 nike

如何从守护进程内的信号处理程序向启动守护进程的进程返回一个值?

sub _fork
{
my $pid = fork;
$pid;
}
sub daemonize_monitor_sigio
{
_fork and return;

SIG{IO} = sub{
print "caught sigio";
$ret = {}
...#do some processing

#wants to return $ret here;
}
while(1)
{
;
}
}

daemoniz_monitor_sigio();

最佳答案

关于信号处理程序的事情是它们非常简单。它们基本上是来自内核的中断,传递给进程。

处理程序可以改变进程内的状态。但是因为您已经预先 fork() 了,所以您有一个父进程和一个子进程——两者没有任何共享状态。所以从一个到另一个的“信号”是一个完全独立的IPC - 在最简单的级别 - 您可以向父进程发送另一个 kill 信号 - 并通过 getpgrp 获取此 pid .

不过,对于更复杂的 IPC,您正在查看……好吧,阅读 perlipc 文档,然后找出最合适的方法。

关于linux - 从 perl 守护进程中的信号处理程序返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36581280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com