Project

General

Profile

Actions

Bug #2796

closed

IO behaviors on mingw

Added by mame (Yusuke Endoh) almost 15 years ago. Updated over 13 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
Backport:
[ruby-dev:40506]

Description

=begin
akr さん
遠藤です。

以下のように、IO に関して Linux と mingw で挙動が違います。
それぞれ仕様でしょうか、バグでしょうか。

  1. $ ./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

  2. $ ./ruby -e 'f1 = File.open("foo", "w"); f2 = IO.new(f1.fileno); p f2.gets'
    linux: IOError
    mingw: EBADF

  3. $ 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"

  4. $ 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

  5. $ ./ruby -e 'File.open("foo", "w") {|f|
    f.write_nonblock("012345678901234567890123456789") }'
    linux: 普通に書き込まれる
    mingw: EBADF

なんとなく想像できるものもありますが、IO はとても難解なので
下手に判断することをやめます。

--
Yusuke ENDOH
=end


Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #1582: IO.new Raises Other Errors between 1.8 and 1.9Closed06/06/2009Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0