我有一些测试代码:如何从父perl守护进程获取pid?
#!/usr/bin/perl
use strict;
use warnings;
use Proc::Daemon;
my $daemon = Proc::Daemon->new;
Proc::Daemon::Init();
my $kid_pid = $daemon->Init(
{ work_dir => '/home/develop',
pid_file => 'pid.txt',
exec_command => 'perl /home/develop/test.pl ',
}
);
$| = 1;
while (1) {
my $status = $daemon->Status([$kid_pid]);
if (!$status) {
my $kid_pid = $daemon->Init(
{ work_dir => '/home/develop',
pid_file => 'pid.txt',
exec_command => 'perl /home/develop/test.pl ',
}
);
}
sleep(5);
}
我需要的脚本test.pl知道他的PID。给他一个PID作为参数将是理想的,但是在Init方法的论据中给他$ kid_pid的课程是不可能的。从文件读取选项是不合适的。
现在我需要知道父脚本的PID。代码my $ppid = Proc::Daemon::Init();
不为我工作,因为我有循环脚本,他工作不正确。 $$
不起作用,因为Proc::Daemon::Init()
有另一个PID。
'exec_command => “的perl /home/develop/test.pl $$”'然后'$ ARGV [0]''里面test.pl' – 2014-10-16 11:35:12
问题还是实际的,因为我不知道怎么弄来自子守护程序的父pid。从文件中读取并不适合我。 – Alexandr 2014-10-16 13:49:31
'$ ARGV [0]'在命令行中。 – 2014-10-16 13:52:03