Perlでforkされたプロセスからの出力を得る

私はPerlでプロセスをフォークしていますが、実際はwgetコマンドです。 Wgetはいくつかのデータをファイルに書き出します。 wgetが生成した出力(ファイルではない)をキャプチャしてメインプログラムに持っていきたいと思います。私が取り組んでいるコードスニペットは次のとおりです。

my $pid;
my @wgetDump;
my $videoFileName = "abc";
my $fileURL = "http://www.youtube.com/watch?v=Y8NI2qUZ1co&feature=relmfu";

if ($pid = fork) {
####Parent Process
print "Child Process ID: $pid";
} else {
####child process
@wgetDump = `wget -O $videoFileName -c \"$fileURL\" 2>&1`;
}

foreach (@wgetDump) {
### Here it want to get the @wgetDump Data which is actually the output of child process.
### But I am not getting anything here.
}

誰でもお勧めしますか?

0

1 答え

まず、なぜwgetを使用していますか? LWP :: UserAgentを使ってWebページを取得してみませんか?その後、ファイルを読み込む必要はありません。すでにデータがあります。

あなたのコードでは、子プロセスだけがwgetデータを取得するので、子プロセスで処理します。本当にそれを親プロセスに戻したい場合は、IPCが必要です。 IPC :: Open2の使用を検討してください。しかし、私はLWPを使用して子供のデータを処理します。

1
追加された