Ruby 4.1 リファレンスマニュアル

singleton method Dir.fchdir

fchdir(fd) -> 0Ruby 3.3 から[permalink][rdoc][edit]
fchdir(fd) { ... } -> object

カレントディレクトリを、整数のファイルディスクリプタ fd が指すディレクトリに変更します。

ファイルディスクリプタを UNIX ソケット経由で渡したり子プロセスに渡したりする場合、Dir.chdir の代わりに fchdir を使うと TOCTOU (time-of-check to time-of-use) 脆弱性を避けられます。

ブロックを指定しない場合、カレントディレクトリを fd の指すディレクトリに変更し、 0 を返します。

ブロックを指定した場合、カレントディレクトリの変更はブロックの実行中に限られます。ブロックの実行結果を返します。

[PARAM] fd:
ディレクトリを指すファイルディスクリプタを整数で指定します。
[EXCEPTION] Errno::EXXX:
失敗した場合に発生します。
Dir.chdir("/var/spool/mail")
p Dir.pwd            # => "/var/spool/mail"

dir = Dir.new("/usr")
Dir.fchdir(dir.fileno)
p Dir.pwd            # => "/usr"

[SEE_ALSO] Dir.chdir, Dir#fileno, Dir.for_fd