从perl守护程序

时间:2016-04-12 18:29:38

标签: linux perl signals

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

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();

1 个答案:

答案 0 :(得分:0)

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

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

对于更复杂的IPC,您可以查看......好吧,阅读perlipc文档,找出最合适的内容。