Получите вывод из Forked Process в Perl - PullRequest
0 голосов
/ 25 ноября 2011

Я разветвляю процесс в 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 Ответ

1 голос
/ 25 ноября 2011

Во-первых, почему вы используете wget?Почему бы не использовать LWP :: UserAgent для получения веб-страницы?Затем вам не нужно читать файл после этого, у вас уже есть данные.

В вашем коде только дочерний процесс получит данные wget, так же как и ваша обработка в дочернем процессе.Если вы действительно хотите передать его родительскому процессу, вам потребуется IPC.Рассмотрите возможность использования IPC :: Open2.Но я бы использовал LWP и обработал данные у ребенка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...