内容へ移動
とあるエンジニアの闇歴史帳
コピペで使える便利Wiki ※現在構築中です。
ユーザ用ツール
ログイン
トレース:
perl:file_open_modea
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== 1回のファイルオープンで読み書きを同時にする - Perl ====== ~~socialite~~ <note important>この記事は2006年10月04日に書かれたものです。</note> open関数でファイルを開き、読み書きを同時に行いたい場合はどうすれば良いだろうか?これを解決するには単純にファイルの読み書きモードを使用すれば良い。 ===== サンプル ===== <code perl> #------------------------------- #読み書きモードで開く #------------------------------- open(DAT, "+<file.txt"); flock(DAT, 2); # flockでロックをすれば読み書き両方がロック出来る #------------------------------- #ファイル読込 #------------------------------- $buff = <DAT>; # @buff = <DAT>; #------------------------------- #ファイルに記録 #------------------------------- truncate(DAT, 0); #ファイルサイズを0byteに seek(DAT, 0, 0); #書き込む場所をファイルの先頭に print DAT "Hello!"; #ファイルに記録 close(DAT); </code> 例えばアクセスカウンターなどを作成した際にファイルロックが不十分だと、現在の値を読込むためにファイルを開き閉じる、その後書き込みむためにファイルを開き...という処理を行っていると、読み書きの間に他のプロセスが発生した場合に不整合が発生する可能性がある。 もちろん、これ以外にも解決方法はあるが、ひとつの解法として覚えておいて損はない。 ===== 関連書籍 ===== {{amazon>jp:4873113008}} <html><p style="clear:both"></p></html> {{amazon>jp:B00ISP0OM8}} <html><p style="clear:both"></p></html> {{tag>CGI・Perl例文集 Perl ファイル }} ~~socialite~~
関連ページ
perl/file_open_modea.txt
· 最終更新: 2020/06/23 14:10 (外部編集)
ページ用ツール
文書の表示
バックリンク
文書の先頭へ