所以我在Perl中创建一个这样的过程:
my $process = `nohup ./run > /dev/null 2>&1 &`;
返回
的内容[1] 2905
如何从中获取进程ID,以便稍后在脚本执行中我可以运行以下内容:
exec("kill -9 $pid");
这是我到目前为止所得到的:
/\[1\] ([0-9]+)/g
但它看起来很乱,有没有办法改进这个正则表达式?那个正则表达式总能工作吗?有什么情况下它不会[1]
?
答案 0 :(得分:1)
怎么样
@ar = split(/\s+/, $process);
$pid = $ar[1];
答案 1 :(得分:0)
你应该在这里使用“fork and exec”模式。
if (my $pid = fork()) {
# You're in the parent process
# $pid contains the PID of the new child process
...
} else {
# You're in the new child process
# exec() your new command
exec($cmd);
# Execution never gets here
}
编辑:实际上,鉴于您基本上是在这里创建一个守护进程,或许您应该改为Proc::Daemon。