perl调用外部命令kill出现异常,请高手指教

perl调用外部命令kill出现异常,请高手指教

#!/usr/bin/perl -w

use strict;
my $pName = '进程名称';
#获取进程号

my $pid   = &get_processid($pName);
if($pid<0)
{
   exit(-1);
}
#向进程发送信号

`kill -s SIGHUP $pid`;


#子函数,获取进程号

sub get_processid($)
{
        my ($str_name) = @_;
        my $cmd = "ps -auxww|grep $str_name|grep -v grep";
        if($^O=~/SunOS/i || $^O=~/Solaris/i )
        {
                $cmd = "/usr/ucb/ps -auxww|grep $str_name|grep -v grep";
        }
        my $ret = `$cmd`;
        if($ret=~/\S+\s*(\d+)\s+.*/)
        {
                return $1;
        }
        else
        {
                return(-1);
        }
}

    问题情形如下:直接在shell下,调用该命令没有任何问题,但是如果在程序里调用,会出现如下错误信息:
    /usr/bin/kill[8]: kill:不对的选项
也用system函数调用过,出现同样的问题,不知道是什么原因,请高手指教
perldoc -f kill
你的意思是调用perl的内部函数kill,这样的话,就得知道每个信号的实际数值,而不能用SIGHUP,SIGTERM......之类的宏代替了,我只是觉得奇怪,为什在shell里调用就没有问题,而在perl程序中调用就会出现这个问题,很费解


QUOTE:
原帖由 UC_hmf 于 2008-1-11 10:58 发表
这样的话,就得知道每个信号的实际数值,而不能用SIGHUP,SIGTERM......之类的宏代替了

are you sure?   <---------- 是这么说的吧?

kill HUP => $pid1;
kill TERM => $pid2;
kill USR1 => ($pid3, $pid4);
kill HUP => $pid1;
kill TERM => $pid2;
kill USR1 => ($pid3, $pid4);
什么意思,没有见过这样调用的,附上文档
自己看,
perldoc -f kill
     kill SIGNAL, LIST
             Sends a signal to a list of processes.  Returns the
             number of processes successfully signaled (which is
             not necessarily the same as the number actually
             killed).

                 $cnt = kill 1, $child1, $child2;
                 kill 9, @goners;
........................


然后再看清楚我的问题,我想问,直接在shell下,调用该命令没有任何问题,但是如果在程序里调用出错
很牛逼,是吧?
本座最看不惯牛逼的提问者了。
“有能”的话,就自己搞定。
“无能”的话,就仔细看人家的回复。