Chinaunix首页 | 论坛 | 博客
  • 博客访问: 58422
  • 博文数量: 11
  • 博客积分: 1757
  • 博客等级: 少尉
  • 技术积分: 15
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-29 22:01
个人简介

C,Linux,Kernel,Driver,Security

文章分类
文章存档

2015年(10)

2012年(1)

分类:

2015-07-09 05:08:16

原文地址:perl的输出缓冲 作者:machine

今天写一个小脚本的时候,需要即时输出当前进度到命令行上,并即时将重要数据写入报告文件中。但是perl默认是有输出缓冲的,显示到命令行上必须以\n结尾才行,输出到文件中,回车了都不行,非得要等缓冲区满了。
代码:

select( STDOUT );
$| = 1;
open( REPORT, ">report.txt" ) || die "create report error: $!\n";
select( REPORT );
$| = 1;
select( STDOUT );

      在写入报告和输出进度之前这样处理一下就可以了。第一句是选择标准输出句柄为当前默认输出句柄,并设置为不缓冲方式。然后选择文件句柄为默认输出句柄,设置为不缓冲模式。再最后重新设置STDOUT为默认输出句柄,少了这一句的话,标准输出就被重定向到文件里面去了。

      这样就会即时写入报告,不用担心丢失数据了。即使中途中止了程序,也有一部分结果在。做个小tip,免得忘记了,呵呵。
阅读(1102) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~