【发布时间】:2020-05-29 13:54:17
【问题描述】:
我有一个脚本,可以打开一个启动外部程序的进程。外部程序写入标准输出,在父程序中我同时写入标准输出和文件。立即打印到标准输出,但打印到文件正在缓冲。在将其转储到文件之前,它必须等待某种 Xk 编号。我已经在输出文件、管道、stdout 上尝试了 autoflush,并且还使用了 stdbuf。但是没有任何作用,因为它只以块消息的形式写入文件。我错过了什么吗?
my $output = "/home/output.log";
open(OL,">$output");
OL->autoflush(1);
open(P,'-|',"stdbuf -o0 -e0 external_program.py 2>&1");
$| = 1;
P->autoflush(1);
STDOUT->autoflush(1);
while(<P>) {
chomp;
print OL "$_\n";
print "$_\n";
}
close(OL);
close(P);
【问题讨论】:
标签: perl