Issue #16962 has been reported by ioquatix (Samuel Williams).

----------------------------------------
Bug #16962: IO.close behaviour
https://bugs.ruby-lang.org/issues/16962

* Author: ioquatix (Samuel Williams)
* Status: Open
* Priority: Normal
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
I discussed this with @eregon and I think the goal here is to try and figure out a way these interfaces can be a bit less confusing. 

1/ I don't understand this behaviour:

```ruby
STDOUT.close
STDOUT.puts "Hello World"
# => closed stream
```

vs

```ruby
IO.for_fd(STDOUT.fileno, autoclose: true).close
STDOUT.puts "Hello World"
# => Hello World
```

2/ `IO.for_fd(..., autoclose: true/false)`

The documentation for `autoclose` is:

> If the value is false, the fd will be kept open after this IO instance gets finalized.

But it also seems to affect `#close` - i.e. calling close does not close underlying file descriptor.

Should we fix the documentation or is the implementation wrong?




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>