我有一个过程,
执行如下:
process_name > file.txt
会将所有输出重定向到 file.txt 以及控制台。
像这样执行时
process_name >& file.txt&
将输出重定向到 file.txt 但不会将输出打印到控制台,返回控制台上的 pid。
现在我想执行第二种在 perl 脚本中运行进程的方法!我怎么能这样做?目前我正在使用以下方法:
#!/usr/bin/perl
use strict;
use warnings;
my $res = `bsm_adjust_controller -F -ra -d 'subnetwork=NETSim_STD/bsc=0005' -f /tmp/31102012/Task_31102012_1421_0005.log >& /tmp/31102012/Ctrl_31102012_1421_0005.log&`;
print $res;
当我运行它给出的脚本时:
./temp.pl
sh: /tmp/31102012/Ctrl_31102012_1421_0005.log: bad number
我还尝试了以下方法:
#!/usr/bin/perl
use strict;
use warnings;
my $res = "bsm_adjust_controller -F -ra -d 'subnetwork=NETSim_STD/bsc=0005' -f /tmp/31102012/Task_31102012_1421_0005.log >& /tmp/31102012/Ctrl_31102012_1421_0005.log&";
open(CMD, '-|', $res) || die "couldn't run $res: $!\n";
即使是上面的脚本也会抛出同样的错误。目的是在后台执行进程并继续执行下一个语句,而不关心进程发生了什么,而且我不需要在内部运行进程的输出到控制台。
有人可以帮忙吗?