わたなべです。

Koji Arai <JCA02266 / nifty.ne.jp> writes:

> 今cygwin perl v5.8.0で試してみたら
> 
> echo aaa > aaa
> perl -ni -e 'print "bbb\n"' aaa
> cat aaa
> bbb
> 
> とうまくいきますね。

Cygwin DLLのunlinkはこういう場合にも対応していて、openしたま
まのファイルの削除をプロセスが終了するまで遅延します。
% ls
foo.rb
% cat foo.rb
open("foo.txt", "w") do |fw| fw.puts "foo" end
fr = open("foo.txt")
File.unlink("foo.txt")
puts Dir['*.txt']
puts fr.gets
fr.close
% ruby foo.rb
foo.txt
foo
% ls
foo.rb

> # 確かにrubyじゃだめだった

RubyもCygwinは#undef NO_SAFE_RENAMEすればいいんですよね。
#Cygwin DLLのunlinkも昔はそんなことまではやってくれなかったので。

-- 
わたなべひろふみ