相关疑难解决方法(0)

在perl中,当使用open创建子项时杀死孩子及其子女

这是我的代码,为了清楚起见,删除了错误处理和其他内容:

sub launch_and_monitor {  

    my ($script, $timeout) = @_;

    sub REAPER {
        while ((my $child = waitpid(-1, &WNOHANG)) > 0) {}
        $SIG{CHLD} = \&REAPER;
    }
    $SIG{CHLD} = \&REAPER;

    my $pid = fork;
    if (defined $pid) {
        if ($pid == 0) {
            # in child
            monitor($timeout);
        }
        else {
            launch($script);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

launch子程序执行一个shell脚本,然后启动其他进程,如下所示:

sub launch($) {

    my ($script) = @_;

    my $pid = open(PIPE, "$script|");

    # write pid to pidfile

    if ($pid != 0) {
        while(<PIPE>) {
            # do stuff …
Run Code Online (Sandbox Code Playgroud)

perl children kill

6
推荐指数
1
解决办法
6571
查看次数

标签 统计

children ×1

kill ×1

perl ×1