【发布时间】:2016-06-20 18:46:45
【问题描述】:
我正在为 Ubuntu 系统上的 SIGCHLD 信号处理程序使用 perl 信号处理程序函数。 为了获得 sa_siginfo,我正在解压缩从 sigaction 获得的二进制数据。现在我将 si_code 设为“25”。看着http://man7.org/linux/man-pages/man2/sigaction.2.html如何解释?它说它不是位掩码,而是一个值。 我得到的输出是:
in order : signo sicode sigval sigerro sigpid siuid siaddr sistatus siband 17 0 1 0 21225 0 0 25 0
Signo,pid 已正确解包,我已验证。我不明白如何将 25 设为“si_status”
POSIX::sigaction(
POSIX::SIGCHLD,
POSIX::SigAction->new(
sub{
my $args = \@_;
my $pid = unpack "x16S",$_[2];
my($signo,$sicode,$sigval,$sigerro,$sipid,$siuid,$siaddr,$sistatus,$siband) = unpack "iiiiisssii" ,$_[2];
print "\n in order : signo sicode sigval sigerro sigpid siuid siaddr sistatus siband ";
print (join (" ", $signo, $sicode , $sigval , $sigerro ,$sipid ,$siuid ,$siaddr ,$sistatus ,$siband));
}
0,
POSIX::SA_SIGINFO ),
);
【问题讨论】: