Forum: Ruby-core New method File.openat()

18813f71506ebad74179bf8c5a136696?d=identicon&s=25 unknown (Guest)
on 2014-08-29 11:03
(Received via mailing list)
Issue #10181 has been updated by Eric Wong. wrote:
 > I don't think it is possible to emulate `openat` family by FD in user
 > So adding `rb_cloexec_open2()` is a bad idea, IMHO, not only its

 Right, we cannot emulate `openat`; this needs kernel support.

 Also, may not be portable enough for non-Linux.  I think
 this should be based on Dir class instead (using, as
 discussed with Joel).

Feature #10181: New method File.openat()

* Author: Technorama Ltd.
* Status: Open
* Priority: Normal
* Assignee:
* Category:
* Target version:
The purpose of the openat() function is to enable opening files in
directories other than the current working directory without exposure to
race conditions. Any part of the path of a file could be changed in
parallel to a call to open(), resulting in unspecified behavior. By
opening a file descriptor for the target directory and using the
openat() function it can be guaranteed that the opened file is located
relative to the desired directory.

openat() is part of POSIX.1-2008.

  Linux kernel >= 2.6.16
  FreeBSD >= 7.0
  OpenBSD >= 5.0
  NetBSD >= 6.1.4
  MacOS/X no

Pull request:
This topic is locked and can not be replied to.