【Perl】ファイルロック(排他処理)について語ろうat PHP【Perl】ファイルロック(排他処理)について語ろう - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト846:833 05/12/09 22:05:50 sub open { my ( $filename ) = @_; my ( $handle, $tempfile, $mode ); if( $filename =~ /^>.*/ ) { $filename =~ s/^>(.*)/$1/; $mode = 2 } elsif( $filename =~ /^<.*/ ) { $filename =~ s/^<(.*)/$1/; $mode = 1 } else { return undef; } if( $mode == 1 && !( -e $filename )) { return undef } if( !$_FileList{$filename} ) { my $lockname = $filename; $lockname =~ s/(.*)\.(.*)/$1\.lck/; open( $handle, ">$lockname" ); my $count = 0; while( !flock( $handle, ( 2 | 4 ))) { sleep( 1 ); if( $count++ > 10 ) { die "flock busy" } } $_FileList{$filename}{'lock'} = $lockname; $_FileList{$filename}{'handle'} = $handle; } $tempfile = $filename; if( $mode == 1 ) { if( $_FileList{$filename}{'temp'} ) { $tempfile = $_FileList{$filename}{'temp'} } if( !open( $handle, "<$tempfile" )) { die "file open error(read)" } } elsif( $mode == 2 ) { if( $_FileList{$filename}{'temp'} ) { $tempfile = $_FileList{$filename}{'temp'} } else { $tempfile =~ s/(.*)\.(.*)/$1\.tmp/; $_FileList{$filename}{'temp'} = $tempfile; } if( !open( $handle, ">$tempfile" )) { die "file open error(write)" } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch