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