ファイルの存在チェック
[上に]
[前に]
[次に]
初心者
1999/08/22(日) 19:12:52
perlで、ディレクトリに特定のファイルが存在しているかどうかの
判定をした後、ファイルが存在していないならばファイル名を指定して
空のファイルを作成したいのですがどのようにすれば実現可能で
しょうか?
宜しくお願い致します。
ふじ
1999/08/22(日) 19:45:54
・ファイルの存在チェック→ファイルテスト演算子
if(-e "filename"){
ファイルあり
}else{
ファイルなし
}
・空のファイル作成
open (OUT ,"> filename");
close OUT;
#以下余談なので外してたら読み流してください。
ファイルがあるかどうを調べて空のファイルを作成、というと
ファイルのロック(排他処理)にでも使うおつもりでしょうか?
であれば、この方法は完全なロックには成りません。
ほぼ同時に2つのプロセスが起動したとして、
・プロセス A がファイルの存在チェック → ファイルなしと判定
・(プロセス A が空のファイルを作る前に)プロセス B がファイルの存在チェック
→ ファイルなしと判定
・プロセス A が空のファイルを作成(ロック成功したつもり)
・プロセス B も空のファイルを作成(ロック成功したつもり)
という順序で処理が進むと、排他処理になりません。
そういうときは mkdir を使った方が良いです。
if (mkdir ("lock_dir" , 0777 )){
成功
}else{
失敗
}
こうすると、存在チェックとロックファイル(ディレクトリ)の作成が
同時に行える(既に同じ名前のディレクトリがある場合は、
mkdir が失敗する)ので、普通のファイルを作成する方法よりは
確実なロックになります。
#UNIXでもWindowsでも使えます。
[上に]
[前に]
[次に]