Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从perl守护进程内的信号处理程序返回值_Linux_Perl_Signals - Fatal编程技术网

Linux 从perl守护进程内的信号处理程序返回值

Linux 从perl守护进程内的信号处理程序返回值,linux,perl,signals,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; } w

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

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()
ed了,所以您有一个父进程和一个子进程,这两个进程没有任何共享状态。因此,从一个进程到另一个进程的“信令”是完全独立的-在最简单的级别上-您可以向父进程发送另一个
kill
信号-并通过


不过,对于更复杂的IPC,您将看到。。。好吧,读一下perlipcdoc,找出最合适的方法

“称为守护进程”是什么意思?“向进程返回值”是什么意思?请更好地指定您的问题。传递信息的方法很多,在特定条件下,两者都有很多失败的方法。