CHDIR(2)

名称
chdir, fchdir - 現在の作業ディレクトリを変更する

ライブラリ
libc

書式
<unistd.h> int chdir(const char *path) int fchdir(int fd)

解説
path 引数は、ディレクトリのパス名を指します。 chdir() システムコールによって、指定されたディレクトリが 現在の作業ディレクトリ、すなわちスラッシュ ‘/’ で開始しないパス名のパス検索の開始点になります。

fchdir() システムコールによって、 fd が参照するディレクトリが 現在の作業ディレクトリ (スラッシュ ‘/’ で開始しないパス名のパス検索の開始点) になります。

ディレクトリが現在の作業ディレクトリになるためには、 プロセスがそのディレクトリへの 実行 (検索) アクセス許可を持っている必要があります。

戻り値

エラー
次のうち 1 つ以上が真の場合、 chdir() システムコールの処理は失敗し、現在の作業ディレクトリは変更されません:

[ENOTDIR]
    パスの構成要素中にディレクトリ以外のものが含まれています。

[ENAMETOOLONG]
    パス名の構成要素が 255 文字を越えているか、 またはパス名全体が 1023 文字を越えています。

[ENOENT]
    指定されたディレクトリが存在しません。

[ELOOP]
    パス名を変換するときに検出されたシンボリックリンクが多すぎます。

[EACCES]
    パス名の構成要素のいずれかで、検索が許可されていません。

[EFAULT]
    path 引数が、プロセスに割り当てられたアドレス空間の範囲外を指しています。

[EIO]
    ファイルシステムに読み書きしている間に入出力エラーが発生しました。

次のうち 1 つ以上が真の場合、 fchdir() システムコールの処理は失敗し、現在の作業ディレクトリは変更されません:

[EACCES]
    ファイル記述子が参照するディレクトリで検索が許可されていません。

[ENOTDIR]
    ファイル記述子がディレクトリを参照していません。

[EBADF]
    引数 fd が有効なファイル記述子ではありません。

関連項目
chroot(2)

規格
chdir() システムコールは p1003.1-90 に適合しています。

歴史
chdir() システムコールは AT&T UNIX で登場しました。 fchdir() システムコールは 4.2BSD で登場しました。