San*_*osh 3 windows io perl unbuffered
我有一个Perl应用程序,它使用open和print调用将日志写入文件.
open (FH, "d:\\temp.txt");
print FH "Some log";
close (FH);
Run Code Online (Sandbox Code Playgroud)
但是,在机器突然关闭期间,日志不会持久保存到文件中.因此,在几个地方搜索之后,建议使用两个选项来执行无缓冲的IO(即将文本写入磁盘而不是将其保存在缓存中然后将其刷新):
我已经尝试了这两个选项,它只是不起作用.在异常关闭之前我做的任何写操作都会丢失.
有什么方法可以在Perl中几乎确定地完成无缓冲的IO?我使用Perl 5.8.3运行Windows 7 64位.
编辑:我搜索了如何让Windows执行无缓冲的IO,这是如何做到的!呼叫
有人可以帮助Perl的Win32 API进行这3次调用.
use IO::Handle;
open(FH, "d:\\temp.txt");
FH->autoflush(1);
print FH "Some log";
close(FH);
Run Code Online (Sandbox Code Playgroud)
这将尽快将其发布到操作系统,但操作系统可能需要一段时间才能将其提交到磁盘.我仍然相信你会发现这会满足你的需求.
如果您使用的是unix,我会引用您同步以获取有关将操作系统提交数据到磁盘的更多信息.
| 归档时间: |
|
| 查看次数: |
1999 次 |
| 最近记录: |