Linux Perl不返回PID

Linux Perl不返回PID,linux,perl,bash,pid,Linux,Perl,Bash,Pid,如果我运行命令 nohup ./run > /dev/null 2>&1 & disown 在我的终端中,我得到了一些类似于[1]1234的东西,我知道这是PID 然而,当我在Perl中运行下面的代码时,它返回一个关于disown未定义或什么的错误,但这不是重点。当我删除disown时,终端返回相同的内容,但Perl不返回任何内容。分配给它的变量为空 my $command = `nohup ./run > /dev/null 2>&1 &

如果我运行命令

nohup ./run > /dev/null 2>&1 & disown
在我的终端中,我得到了一些类似于
[1]1234
的东西,我知道这是PID

然而,当我在Perl中运行下面的代码时,它返回一个关于
disown
未定义或什么的错误,但这不是重点。当我删除
disown
时,终端返回相同的内容,但Perl不返回任何内容。分配给它的变量为空

my $command = `nohup ./run > /dev/null 2>&1 &`;
print("a " . $command); // "a " to check if it's actually printing anything.
输出:

a 
预期产出:

[1] 1234
如何让Perl显示命令的PID,然后用它进行解析

@ar  = split(/\s+/, $process);
$pid = $ar[1];

它是由另一个Stackoverflow用户在我的上一个问题中提供的。

[1]1234
仅由bash为交互式Shell(即以
-i
选项开头的Shell)输出

另一个选项是使用“后台监控”。不幸的是,它只通过PID文件返回PID。

试试这个

  $pin1=`(nohup ./run >/dev/null 2>&1 \& echo \$! )`   

ug,我忘了实际使用使此工作正常的选项。修正了。不幸的是,两者仍然返回null。没有null这个词。详细说明。然后返回一个空字符串。如果我使用
print
它不会打印任何内容。如果您在生成shell输出
[1]1234
时遇到问题,您应该先说明您使用的shell。(
sh--version
?)您还应该为shell标记您的问题,因为您的问题与Perl无关。您能解释一下吗?我的answser类似于@ikegami:my$command=
sh-ic'nohup./run>/dev/null 2>&1&'2>&1
;除了我的代码从bashshell“echo$!”获取pin之外。
use IPC::System::Simple qw( capture );
capture(q{sh -ic 'nohup ./run > /dev/null 2>&1 &' 2>&1});
  $pin1=`(nohup ./run >/dev/null 2>&1 \& echo \$! )`