1
我必須發送一個sigusr2信號編號12到一個名爲xyz的進程在cgi perl腳本中。我執行以下操作:無法發送信號到另一個進程perl
my $pid = `pidof xyz`;
kill 12, $pid or die "could not kill: $pid";
當我按下運行此命令的按鈕時,它會死亡。
如何將信號發送到cgi perl腳本中名爲「xyz」的進程。
我必須發送一個sigusr2信號編號12到一個名爲xyz的進程在cgi perl腳本中。我執行以下操作:無法發送信號到另一個進程perl
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不匹配可能是原因。你可以使用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身份運行,這是不推薦的)。
其他進程是否運行相同的用戶ID?只有root可以發送信號給不同的用戶進程。 – Barmar
嘗試在錯誤消息中包含'$!',以便查看錯誤原因。 – Barmar
@Barmar如何檢查cgi perl腳本的用戶標識。和另一個過程。 – RootPhoenix