无法将信号发送到perl中的另一个进程
Cannot send signal to another process in perl
我必须将 sigusr2 信号编号 12 发送到 cgi perl 脚本中名为 xyz 的进程。我执行以下操作:
my $pid = `pidof xyz`;
kill 12, $pid or die "could not kill: $pid";
当我按下这个命令 运行 上的按钮时它就死了。
如何在 cgi perl 脚本中向名为 "xyz" 的进程发送信号。
您应该将错误消息扩展 $!:
my $pid = `pidof xyz`;
kill 12, $pid or die "could not kill $pid: $!";
$!包含最后一个系统调用错误:http://perldoc.perl.org/perlvar.html#%24ERRNO
您还应该检查是否已找到任何 PID:
my $pid = `pidof xyz`;
die 'No PID found for xyz!' unless $pid;
kill 12, $pid or die "could not kill $pid: $!";
uid 不匹配(如对 post 的评论中所述)可能是原因。您可以使用 ps 检查:
my $pid = `pidof xyz`;
die 'No PID found for xyz!' unless $pid;
system "ps u $$ $pid";
kill 12, $pid or die "could not kill $pid: $!";
输出应如下所示:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 185388 5960 ? Ss 08:31 0:01 /sbin/init splash
some 3159 0.0 0.0 27296 8836 pts/11 Ss 08:33 0:00 bash
USER 列的值对于两个进程(Perl 进程和被杀死的进程)应该相同,否则不允许发送任何信号(除非您的脚本以 root 身份运行,否则不推荐这样做)。
我必须将 sigusr2 信号编号 12 发送到 cgi perl 脚本中名为 xyz 的进程。我执行以下操作:
my $pid = `pidof xyz`;
kill 12, $pid or die "could not kill: $pid";
当我按下这个命令 运行 上的按钮时它就死了。
如何在 cgi perl 脚本中向名为 "xyz" 的进程发送信号。
您应该将错误消息扩展 $!:
my $pid = `pidof xyz`;
kill 12, $pid or die "could not kill $pid: $!";
$!包含最后一个系统调用错误:http://perldoc.perl.org/perlvar.html#%24ERRNO
您还应该检查是否已找到任何 PID:
my $pid = `pidof xyz`;
die 'No PID found for xyz!' unless $pid;
kill 12, $pid or die "could not kill $pid: $!";
uid 不匹配(如对 post 的评论中所述)可能是原因。您可以使用 ps 检查:
my $pid = `pidof xyz`;
die 'No PID found for xyz!' unless $pid;
system "ps u $$ $pid";
kill 12, $pid or die "could not kill $pid: $!";
输出应如下所示:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 185388 5960 ? Ss 08:31 0:01 /sbin/init splash
some 3159 0.0 0.0 27296 8836 pts/11 Ss 08:33 0:00 bash
USER 列的值对于两个进程(Perl 进程和被杀死的进程)应该相同,否则不允许发送任何信号(除非您的脚本以 root 身份运行,否则不推荐这样做)。