【发布时间】:2019-03-17 05:53:15
【问题描述】:
在 Perl 中,我可以打开一个子进程并将其输出通过管道传输到调用 Perl 脚本,如下所示:
open(my $cmd, '-|', 'ls') or die $!;
while (<$cmd>) {
print $_;
}
这会打印我的工作文件夹中的文件,例如:
> foo.txt > bar.txt > ...但是我想对一个保持打开状态的子进程做同样的事情,例如将tcpdump 的标准输出通过管道传输到 Perl,我尝试了类似的操作:
open(my $cmd, '-|', 'tcpdump') or die $!;
while (<$cmd>) {
print $_;
}
...但除了tcpdump 启动文本之外,这不会产生任何http 日志。它似乎只是挂起。什么给了?
【问题讨论】:
-
缓冲问题?