結局、PerlのことはPerlのドキュメントに書いてあるんだなぁ。と。
use Fcntl qw(:DEFAULT :flock); sysopen(FH, "numfile", O_RDWR | O_CREAT) or die "can't open numfile: $!"; # autoflush FH $ofh = select(FH); $| = 1; select ($ofh); flock(FH, LOCK_EX) or die "can't write-lock numfile: $!"; $num = <FH> || 0; seek(FH, 0, 0) or die "can't rewind numfile : $!"; print FH $num+1, "\n" or die "can't write numfile: $!"; truncate(FH, tell(FH)) or die "can't truncate numfile: $!"; close(FH) or die "can't close numfile: $!";
ちう風にかくとよい。と、perlopentutに書かれていた。perldoc perlopentutして、確認。
まぁ、結局、LOCK_EXでいいんだろうなぁ……
コメント