我的代码片段:
my $daemon = Proc::Daemon->new;
Proc::Daemon::Init(
{ work_dir => '/home/olex/develop',
child_STDOUT => '/home/olex/develop/output.file',
child_STDERR => '+>>debug.txt'
}
);
if ( Proc::PID::File->running() ) {
print "Already running\n";
exit 0;
}
my @kids = ( 1 .. 4 );
my @childs;
my $kid_pid;
foreach $kid_pid (@kids) {
$kid_pid = $daemon->Init(
{ work_dir => '/home/olex/develop',
pid_file => "kid_pid.pid",
exec_command => 'perl /home/olex/develop/remote_imapd.pl',
}
);
$childs[$kid_pid] = $daemon->Status($kid_pid);
}
print @childs, "\n";
my $string = join( ',', @childs );
print $string;
@childs
数组的一个元素在STDERR中未初始化,但打印结果正常!在join
之后的结果大约是,,.....,,2450,,2452,,2454,,2456
。为什么会这样?我知道循环有问题,但我觉得我做的一切都正确。我需要类似于2450,2452,2454,2456
的字符串。
$childs[$kid_pid] = $kid_pid;
,结果会相似。 - Kostiuk Aleksandr,,.....,,2450,,2452,,2454,,2456
。你应该复制/粘贴你真正得到的输出。 - TLP1..4
。因此,您的输出应该是,2450,2452,2454,2456
,而没有双逗号“,,”。 - TLP