用perl调度sql脚本,在开多个进程的时候,发现perl写入的log文件先后次序紊乱,又不想搞多线程编程那么麻烦,我的处理方法,对应的文件加锁。perl提供flock函数对文件句柄加锁。
参考代码:
use Fcntl qw(:flock);
my $kk=$ARGV[0];
open wr , ">>/wls/dsadm/etl/test.txt" ;
flock(wr, LOCK_EX);
for($i=1;$i<=80000;$i++)
{
$sum=$i;
print "$sum\n" ;
print wr $sum.$kk."\n";
}
flock(wr, LOCK_EX);
close wr;
注:Fcntl 是获取文件的状态值。