从Perl中的Forked Process获取输出

时间:2011-11-25 05:06:13

标签: perl video 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.
}

任何人都可以建议。

1 个答案:

答案 0 :(得分:1)

首先,你为什么使用wget?为什么不使用LWP :: UserAgent来获取网页?然后你不需要再读取文件,你已经有了数据。

在您的代码中,只有子进程将获取wget数据,因此您在子进程中进行处理。如果你真的想将它传递回父进程,你需要IPC。考虑使用IPC :: Open2。但我会使用LWP并处理孩子的数据。