我有一个Perl脚本,它每三秒向现有文件追加一行内容。同时,有一个C++应用程序会从该文件中读取。
问题在于,应用程序在脚本完成并关闭文件句柄后开始读取文件。为了避免这种情况,我想在每次追加新行后进行强制刷新。如何实现?
我有一个Perl脚本,它每三秒向现有文件追加一行内容。同时,有一个C++应用程序会从该文件中读取。
问题在于,应用程序在脚本完成并关闭文件句柄后开始读取文件。为了避免这种情况,我想在每次追加新行后进行强制刷新。如何实现?
我曾经遇到过同样的问题,唯一的区别是不断地用新内容重复写入同一个文件。这个"$| = 1"和自动刷新的关联对我很有帮助:
open (MYFILE, '>', '/internet/web-sites/trot/templates/xml_queries/test.xml');
$| = 1; # Before writing!
print MYFILE "$thisCardReadingContentTemplate\n\n";
close (MYFILE);
MYFILE->autoflush(1); # After writing!
祝您好运。H
binmode $filehandle
,它将设置:raw
格式,并(作为副作用)进行刷新。它的效果很好。无论如何,如果它在Unix上,您可以创建一个命名管道到文件系统,然后直接写入它。 - TrueY/dev/stdin
如果需要文件名而愚蠢)中读取,并检查它是否能够逐行读取 - 如果使用块缓冲读取,则在写入端无法进行任何操作。 - reinierpost