私は以下のように実行されたときにプロセスを持ってい
ます:
process_name > file.txt
すべての出力をfile.txtとコンソールにリダイレクトします。
このように実行すると
process_name >& file.txt&
出力をfile.txtにリダイレクトしますが、出力をコンソールに出力せず、コンソールにpidを返します。
今、私はperlスクリプト内でプロセスを実行する2番目の方法を実行したいと思います!どうすればこれを行うことができますか?現在、私は以下の方法を使用しています:
#!/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";
上記のスクリプトでも同じエラーがスローされます。目的は、プロセスをバックグラウンドで実行し、プロセスに何が起こったかを気にせずに次のステートメントを続行することです。また、コンソール内で実行されているプロセスの出力は必要ありません。
誰か助けてもらえますか?