gpt4 book ai didi

perl - 如何获取我在 Perl 脚本中触发的 UNIX 命令的进程 ID?

转载 作者:行者123 更新时间:2023-12-05 01:26:33 25 4
gpt4 key购买 nike

我正在 Perl 脚本中触发 UNIX 命令。

我需要 UNIX 命令的进程 ID。

例如,如果我触发以下 UNIX 命令:

# padv -s adv.cfg > adv.out &
[1] 4550

我的进程 ID 是 4550。

# ps -ef | grep padv
root 4550 2810 0 16:28 pts/5 00:00:00 padv -s adv.cfg
root 4639 2810 0 16:29 pts/5 00:00:00 grep padv

如何在我的 Perl 脚本中捕获该进程 ID?

例如,我在 Perl 脚本中触发我的命令,如下所示:

#!/usr/bin/perl

use strict;
use warnings;

qx(padv -s adv.cfg > adv.out &);

最佳答案

你可以使用 open()

Open returns nonzero on success, the undefined value otherwise. If the open involved a pipe, the return value happens to be the pid of the subprocess.

my $pid = open(my $ph, "-|", "padv -s adv.cfg > adv.out") or die $!;

$ph 文件句柄而不是输出重定向读取输出:

my $pid = open(my $ph, "-|", "padv -s adv.cfg") or die $!;

关于perl - 如何获取我在 Perl 脚本中触发的 UNIX 命令的进程 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25445456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com