所以我在 Perl 中创建了一个这样的进程:
my $process = `nohup ./run > /dev/null 2>&1 &`;
它返回的内容类似于
[1] 2905
如何从中获取进程 ID,以便稍后在脚本执行中运行类似:
exec("kill -9 $pid");
这是我到目前为止所得到的:
/\[1\] ([0-9]+)/g
但它看起来很乱,有什么办法可以改进这个正则表达式吗?那个正则表达式会一直有效吗?有没有不会的情况[1]
?
所以我在 Perl 中创建了一个这样的进程:
my $process = `nohup ./run > /dev/null 2>&1 &`;
它返回的内容类似于
[1] 2905
如何从中获取进程 ID,以便稍后在脚本执行中运行类似:
exec("kill -9 $pid");
这是我到目前为止所得到的:
/\[1\] ([0-9]+)/g
但它看起来很乱,有什么办法可以改进这个正则表达式吗?那个正则表达式会一直有效吗?有没有不会的情况[1]
?
怎么样
@ar = split(/\s+/, $process);
$pid = $ar[1];
您可能应该在这里使用“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。