[Perl]



flockは開いたファイルをロック(保護)するために使用されます。Windowsサーバなど、flockが使用できない環境下では使えません。

[例]
-------------------------------------------------------------------
open(SERIAL, "+< ./serial.txt"); #ファイルを読み書きモードで開く
flock(SERIAL, 2); #書き込み宣言
my ($serial) = <SERIAL>; #値を読み込む
chomp $serial; #改行を取り除く
$serial = $serial+1; #値に1追加する
truncate(SERIAL, 0); #ファイルを空にする
seek(SERIAL, 0, 0); #ファイルの先頭に移動
print SERIAL "$serial"; #新しい値を書き込み
close(SERIAL); #ファイルを閉じる。ロックは自動的に解除されます
-------------------------------------------------------------------

[例: 追記の場合]
-------------------------------------------------------------------
open(LOG, "+< ./log.txt"); #ファイルを読み書きモードで開く
flock(LOG, 2); #ロック
seek(LOG, 0, 2); #ファイルの末尾に移動
print LOG "$log\n"; #ファイルに追記
close(LOG); #ファイルを閉じる
-------------------------------------------------------------------

※補足
以下のように書くのは間違い。ファイルを開いた時点でファイルサイズは0になっているため、ロックする意味はない。

open(SERIAL, "> ./serial.txt");
flock(SEIRAL, 2);



広告
初めてのPerl 初めてのPerl
¥ 3,780 / 売り上げランク: 8201 / 379 ページ

いわゆるリャマ本として知られる定番書

初めてのとあるが初心者向きではないと思う。
よくできてはいるが、、。

新版Perl言語プログラミングレッスン入門編 新版Perl言語プログラミングレッスン入門編
¥ 2,835 / 売り上げランク: 12351 / 512 ページ

非常に分かりやすい。
今までにも様々な参考書に目を通してきていたが、その中でもこの本かなり読みやすく、丁寧に書かれていた。
初心者には特にお勧め。
初心者以外の方でも軽く目を通す価値はあると思う。

Code Reading―オープンソースから学ぶソフトウェア開発技法 Code Reading―オープンソースから学ぶソフトウェア開発技法
¥ 5,460 / 売り上げランク: 20416 / 523 ページ

CodeCompleteとCodeReadingを併せて読むとよいと、
組込み系のSESSAMEプロジェクトのメーリングリストと、
OS系のTOPPERSプロジェクトのメーリングリストで推薦を受けました。

CodeCompleteは読んだことがあったので、CodeReadingを読んでいます。

オープンソースを仕事にしているので、たいへん役立っています。

MISRA-Cは研修で取り上げてきたので、本書も研修の資料としても取り上げるように準備中です。