我必须在cgi perl脚本中将sigusr2信号12发送到名为xyz的进程。我做了以下事情:
<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#22ffffff" />
<item android:drawable="#00ffffff" />
</transition>
当我按下运行此命令的按钮时,它就会死亡。
如何向名为&#34; xyz&#34;的过程发送信号?在cgi perl脚本中。
答案 0 :(得分:3)
您应该将错误消息扩展为$!:
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不匹配(如您帖子的评论中所述)可能是原因。您可以使用 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身份运行,不建议这样做。