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 に答える