Bug #2796
closedIO behaviors on mingw
Description
=begin
akr さん
遠藤です。
以下のように、IO に関して Linux と mingw で挙動が違います。
それぞれ仕様でしょうか、バグでしょうか。
-
$ ./ruby -e 'f = File.open("foo", "w"); IO.for_fd(f.fileno, "r")'
linux: EINVAL
mingw: 何も言わない (gets したら EBADF)
参考: http://redmine.ruby-lang.org/issues/show/1582 -
$ ./ruby -e 'f1 = File.open("foo", "w"); f2 = IO.new(f1.fileno); p f2.gets'
linux: IOError
mingw: EBADF -
$ rm foo && touch foo && ./ruby -e 'f = File.open("foo"); p f.eof?;
p f.getc; f.ungetc(100); p f.eof?; p f.getc'
linux: true, nil, false, "d"
mingw: true, nil, true, "d" -
$ echo foo > foo && ./ruby -e 'f = File.open("foo"); f.getc; p
f.pos; f.ungetc(100); p f.pos'
linux: 1, 0
mingw: 1, 1 -
$ ./ruby -e 'File.open("foo", "w") {|f|
f.write_nonblock("012345678901234567890123456789") }'
linux: 普通に書き込まれる
mingw: EBADF
なんとなく想像できるものもありますが、IO はとても難解なので
下手に判断することをやめます。
--
Yusuke ENDOH mame@tsg.ne.jp
=end