0

所以我在 Perl 中创建了一个这样的进程:

my $process = `nohup ./run > /dev/null 2>&1 &`;

它返回的内容类似于

[1] 2905

如何从中获取进程 ID,以便稍后在脚本执行中运行类似:

exec("kill -9 $pid");

这是我到目前为止所得到的:

/\[1\] ([0-9]+)/g

但它看起来很乱,有什么办法可以改进这个正则表达式吗?那个正则表达式会一直有效吗?有没有不会的情况[1]

4

2 回答 2

1

怎么样

@ar  = split(/\s+/, $process);
$pid = $ar[1];
于 2013-09-01T19:48:43.570 回答
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

于 2013-09-02T09:22:24.307 回答