在perl中使用进程名称获取进程的进程id
抱歉,这里没有perl\linux 我正在尝试做一些简单的事情,比如用perl查找进程的进程id。在bash中,这似乎是一件相当简单的事情,但是如果您能提供一些帮助,我们将不胜感激 我首先安装了在CPAN上找到的Proc::Find模块,其语法如下 my$pids=find_procname=>“我的应用程序名”; 打印pid=$pids\n 然而,我在这里得到的结果是在perl中使用进程名称获取进程的进程id,perl,array,reference,Perl,Array,Reference,抱歉,这里没有perl\linux 我正在尝试做一些简单的事情,比如用perl查找进程的进程id。在bash中,这似乎是一件相当简单的事情,但是如果您能提供一些帮助,我们将不胜感激 我首先安装了在CPAN上找到的Proc::Find模块,其语法如下 my$pids=find_procname=>“我的应用程序名”; 打印pid=$pids\n 然而,我在这里得到的结果是 pid = ARRAY(0x55f5069e1c98) 因此,我尝试通过执行以下操作来取消对数组的引用 print &quo
pid = ARRAY(0x55f5069e1c98)
因此,我尝试通过执行以下操作来取消对数组的引用
print "pid = $pids[0]\n";
但这也没有帮助,因为这不会返回任何结果
接下来我想,我可以从perl运行一些bash命令,看看这是否有效
my$pid=pgrep-f signalapp
打印pid=$pid\n
但是当我运行它时,这只会给我一个编译错误。Proc::Find::Find\u Proc返回对数组的引用,而不是数组 因此正确的代码应该是:
my $pids = find_proc(name => 'my-app-name');
foreach my $pid (@$pids) {
print "pid = $pid\n";
}
# or use
# print "pid = ". $pids->[0] . "\n";
# or
# print "pid = $pids->[0]\n";
Proc::Find::Find_Proc返回对数组的引用,而不是数组 因此正确的代码应该是:
my $pids = find_proc(name => 'my-app-name');
foreach my $pid (@$pids) {
print "pid = $pid\n";
}
# or use
# print "pid = ". $pids->[0] . "\n";
# or
# print "pid = $pids->[0]\n";
第一行:
my $pids = find_proc(name => 'my-app-name');
find_proc函数将数组作为输出返回,但不是直接数组,而是对数组的引用$pid是对数组的引用
@$pid
我们使用以下语法读取对数组的引用
@$pid
这表明我们正在读取一个存储在引用中的数组,因此要从该引用中读取一项,我们需要使用以下语法之一
打印pid=$$pid[0]\n;
或
打印pid=${$pid}[0]\n;
或
打印pid=$pid->[0]\n;
第二行:
print "pid = $pids\n";
要在单独的行中显示每个项目,我们可以修改此行,如下所示
一艘班轮:
打印pid:$\un foreach@$pid;
或:
foreach my$item@$pid{
打印pid:$item\n;
}
或:
每小时@$pid{
打印pid:$\n;
}
第一行:
my $pids = find_proc(name => 'my-app-name');
find_proc函数将数组作为输出返回,但不是直接数组,而是对数组的引用$pid是对数组的引用
@$pid
我们使用以下语法读取对数组的引用
@$pid
这表明我们正在读取一个存储在引用中的数组,因此要从该引用中读取一项,我们需要使用以下语法之一
打印pid=$$pid[0]\n;
或
打印pid=${$pid}[0]\n;
或
打印pid=$pid->[0]\n;
第二行:
print "pid = $pids\n";
要在单独的行中显示每个项目,我们可以修改此行,如下所示
一艘班轮:
打印pid:$\un foreach@$pid;
或:
foreach my$item@$pid{
打印pid:$item\n;
}
或:
每小时@$pid{
打印pid:$\n;
}
$pids是一个arrayref。请看这里,因此我尝试通过执行以下操作来取消对数组的引用,这不会取消对引用的引用,strict也会告诉您这么多。始终严格使用;使用警告;或同等产品!是的,谢谢。从现在起,我将默认使用strict和warnings。我将这些添加到perl脚本中,以了解我将获得什么样的指导,它确实告诉我缺少global@pids。全局符号@pids需要显式包名您忘记声明我的@pids了吗?在./sendsignal.pl第9行,$pids是一个arrayref。请看这里,因此我尝试通过执行以下操作来取消对数组的引用,这不会取消对引用的引用,strict也会告诉您这么多。始终严格使用;使用警告;或同等产品!是的,谢谢。从现在起,我将默认使用strict和warnings。我将这些添加到perl脚本中,以了解我将获得什么样的指导,它确实告诉我缺少global@pids。全局符号@pids需要显式包名您忘记声明我的@pids了吗?在./sendsignal.pl第9行。