从 Perl 中的分叉进程获取输出

发布于 2024-12-18 02:48:41 字数 601 浏览 1 评论 0原文

我正在 Perl 中 fork 一个进程,实际上它是一个 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.
}

任何人都可以提出建议吗?

I am forking a process in Perl, actually it is a wget command. Wget writes some data to a file. I want to capture the output (not the file) which wget has generated and bring it to the main program. Here is my code snippet I am working on:

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.
}

Can any one please suggest.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

江湖正好 2024-12-25 02:48:41

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

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

First, why are you using wget? Why not use LWP::UserAgent to get the web page? Then you don't need to read the file afterwards, you already have the data.

In your code, only the child process will get the wget data, so do your processing in the child process. If you really want to pass it back to the parent process, you'll need IPC. Consider using IPC::Open2. But I would use LWP and process the data in the child.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文