In message <874s6f1rqj.wl / studly.netlab.co.jp>
shugo / ruby-lang.org writes:

> Linux的にはmkstemp()を使え、ということらしいのですが、移植性がな
> くなるからtmpfile()を使え、という話になっていました。
> でもtmpfile()じゃ代用できないか…。

「mkstemp() があるプラットフォームではすべからく mkstemp() を使うべし」
という事みたいですが.

mktemp() の何がわるいかって,名前の生成とファイルのオープンが atomic 
でないから割り込んでファイルをすり替える事ができる,っていう点にあるよ
うです.で,tempfile() の実装はこれに引っかかっている可能性がある,と.


実際には mkstemp() があるプラットフォームなら mkstemp() して fdopen() 
っていうような,race condition にならない実装をしている事が多いんでしょ
うけど.``This implementation does not have these flaws, but portable
software cannot depend on that.'' というのもまた事実でしょう.

# 上のは FreeBSD 3.1-Release の tmpfile(3) からの引用.'these flaws'
# には後三つ問題が含まれてますが.


ところで mktemp() が使われている唯一の場所っていうのは,どこなんでしょ
うか? ちょっと前の 1.5.x のソースに grep かけたけど ruby_mktemp() を呼
び出しているところが見当たらないです.

# `-e' の処理あたりだと思ったんだけどな.


-- 
柳川和久 @ 東大阪市 . 大阪府                                  June 27, 2000
Dreams come true --- excepting yours.