使用setsid运行脚本时,在perl中处理ctrl + c

Nir*_*raj 3 perl centos setsid

我的Perl脚本看起来像这样

A.pl

#!/usr/bin/perl
system("perl ctrlc.pl");
Run Code Online (Sandbox Code Playgroud)

ctrlc.pl

sub signal_handler {
    print "Niraj";
}

$SIG{INT} = \&signal_handler;
print "Enter number";

my $no1 = <>;
Run Code Online (Sandbox Code Playgroud)

当我运行perl A.pl并按下Ctrl-C时,它正在检测并打印"Niraj".但是当我跑步时setsid perl A.pl,它没有检测到Ctrl-C.

gag*_*nso 5

setsid创建一个新会话.

SIGINT信号被发送到相关联的TTY会话的前台进程组.由于进程A.pl现在处于不同的会话中,有效地在不同的进程组中,所以A.pl.不接收信号.