unlink

[PHP-users 23600] Re: バージョンアップ後にunlinkでエラー

> オープンしたままのファイルに対して削除(unlink)するなんて
> ルール違反ですしOS、バージョン、タイミングによって
> 挙動が変化するのは当然です。
まさにおっしゃる通りで、基本的には OS によって挙動が変化するのは当り
前ですが、UNIX 系の OS では一時的に作成したテンポラリファイルを確実に
消す方法としては
open 直後に unlink して、そのまま使いつづける
というのは定番的な tips だったりします。
というのは、どれかのプロセスがそのファイルをオープンしていた場合、そ
のオープンしている最後のプロセスがファイルを close するまで、そのファ
イルは存在しつづけることが保証されるからです。確か POSIX でもそう決まっ
ていたはず。
どういうときに嬉しいかというと、先ほども書いたようにプログラム内で一
時ファイルを作るときです。プログラム内で一時ファイルを使用終了したら
unlink するという処理でも良いのですが、それではエラーで終了するときに
もいちいち unlink しなければなりませんし、予想外の異常終了の場合は一時
ファイルが残ったままになってしまいます。open 直後に unlink しておけば、
例えどんなケースであれ、プロセスが終了したら確実にファイルは消去されま
す。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください