如何判断分叉的子节点在Perl中终止?
发布时间:2020-12-15 23:27:37 所属栏目:大数据 来源:网络整理
导读:如何在分叉进程之间共享相同的变量?或者,我是否需要写入父文件中的文件,然后在文件存在后读取保存到子文件中的值? $something似乎永远不会在此设置,所以它只是在睡眠中循环 my $something = -1;doit();sub doit{ my $pid = fork(); if ($pid == 0) { while
如何在分叉进程之间共享相同的变量?或者,我是否需要写入父文件中的文件,然后在文件存在后读取保存到子文件中的值? $something似乎永远不会在此设置,所以它只是在睡眠中循环
my $something = -1; &doit(); sub doit { my $pid = fork(); if ($pid == 0) { while ($something == -1) { print "sleep 1n"; sleep 1; } &function2(); } else { print "parent startn"; sleep 2; $something = 1; print "parent end: $somethingn"; } } sub function2 { print "ENDn"; } 解决方法perldoc -f fork :
参见perldoc perlipc中的Bidirectional Communication with Yourself. 更新:第二个想法,你想要这样的东西吗? #!/usr/bin/perl use strict; use warnings; my $pid = fork; die "Cannot fork: $!" unless defined $pid; if ($pid == 0) { print "Child startn"; my $end; local $SIG{HUP} = sub { $end = 1 }; until ($end) { print "Sleep 1n"; sleep 1; } function2(); } else { print "Parent startn"; sleep 5; kill HUP => $pid; waitpid($pid,0); } sub function2 { print "ENDn"; } 输出: C:Temp> w Parent start Child start Sleep 1 Sleep 1 Sleep 1 Sleep 1 Sleep 1 END (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |