truncateやflockやsymlinkのサポート状態。
[上に]
[前に]
[次に]
ふじもと
[E-Mail]
2000/03/08(水) 19:43:37
タイトルに書いたようなコマンドってサポートされてないときがあるって
書いてありますが、セットで使えないんですか?
それともこれはいいけどこれはだめとかなんですか?
もし
open (FILE, "+<XXX.txt");
eval { truncate (FILE, 0);};
if (|@){
warn "WARNING: not supported.\n";
}
seek (FILE, 0 ,0);
で書き込みをはじめたときに、もしtruncateがサポートされてないと
どういうふうに書き込みが始まるのでしょうか?
ファイルの頭に付け足されていくのでしょうか?
さむそん
2000/03/08(水) 20:25:08
flockがWin32で使えないのは知ってるけど、
seekやtruncateが使えないプラットフォームの
存在は聞いたことがない。
Ichi
2000/03/09(木) 06:09:32
サポートされていない以上、動作の保証は無いと思いますが、
何も処理されないと思いますので、ファイルの末尾に追加されて
行くのではないかと思います。
ちなみに、排他制御しないのなら、
>open (FILE, "+<XXX.txt");
>eval { truncate (FILE, 0);};
は
open(FILE, ">XXX.txt);
で十分です。
ラウォッチ
2000/03/09(木) 09:09:06
>seekやtruncateが使えないプラットフォームの存在は聞いたことがない。
私の本には、
flockはWin32とMacがNG。
symlinkはWin32がNG。
truncateはノーNGです。
びーだま
[E-Mail]
2000/03/09(木) 15:34:45
ちなみに、
flock() は、Win32, Mac でなくとも、使えない場合はありますね。
たとえば、UNIXでも、ファイルサーバが、nfs マウントなどで、CPU
が別に動いている時とかです。
一般的なWEBユーザーでも大型プロバイダーなどでは、サーバー構成が
こうなっている場合が多いので、ローカル環境でOSも同じ、WEBサーバ
も同じ種類手近いシステムを構築して、実験しているから大丈夫とたかを
括って気づかずにつかうと、本番運用でコケますね。
truncate についてですが「らくだ本」などには、あえて
「使えないシステムでは」と別例が書かれていますね。
実際どんな環境で使えないのかは知りませんが・・・
ふじもと
2000/03/09(木) 20:21:01
みなさんありがとうございます。
>open(FILE, ">XXX.txt);
>で十分です。
しかし、flockを使うときにこれでオープンしてしまうとまずいってとほほさんが言ってたような。
flockをする前に書き込みファイルを0にしてしまうのでその間にファイルを読み込まれるとまずいとか。。。
私の理解の仕方が違うのでしょうか?
truncateが使えることは理解しました。
Ichi
2000/03/10(金) 05:25:40
>ちなみに、排他制御しないのなら、
この部分が重要でして...
例えばローカルで動かし、ローカルのファイルを扱う場合です。
ふじもと
2000/03/11(土) 10:19:37
>>ちなみに、排他制御しないのなら、
ローカルでローカルのファイルを扱うとは?
ちょっと解らないです。すみません。知識があまりないので。
スタンドアローンってことですか?
Ichi
2000/03/12(日) 07:32:17
>ローカル...スタンドアローンってことですか
ネットワークコンピュータに対して、ローカルコンピュータということです。
# 間違ってるかも...
つまり、自分のコンピュータです。
ファイルが同時にいくつかのプロセスから開かれない(シングルタスクのOS上)
なら、排他制御しなくていいということです。
(途中で気がつきましたが、マルチタスクのOS上なら、排他制御
しないとまずいです)
ふじもと
2000/03/12(日) 12:32:21
[[解決]]
なんとなく解りました。
よーするに、ネットワークコンピュータで多数の人がアクセスするようなCGIみたいのを
動かすときは、排他制御しないとだめということですよね。
いろいろとお手数おかけしました。
[上に]
[前に]
[次に]