EN JA
CHDIR(2)
CHDIR(2) FreeBSD System Calls Manual CHDIR(2)

名称

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

ライブラリ

Standard C Library (libc, -lc)

書式

#include < unistd.h>

int
chdir( const char *path);

int
fchdir( int fd);

解説

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

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

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

戻り値

Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

次のうち 1 つ以上が真の場合、 chdir() システムコールの処理は失敗し、現在の作業ディレクトリは変更されません:
[ ENOTDIR]
パスの構成要素中にディレクトリ以外のものが含まれています。
[ ENAMETOOLONG]
パス名の構成要素が 255 文字を越えているか、またはパス名全体が 1023 文字を越えています。
[ ENOENT]
指定されたディレクトリが存在しません。
[ ELOOP]
パス名を変換するときに検出されたシンボリックリンクが多すぎます。
[ EACCES]
パス名の構成要素のいずれかで、検索が許可されていません。
[ EFAULT]
path 引数が、プロセスに割り当てられたアドレス空間の範囲外を指しています。
[ EIO]
ファイルシステムに読み書きしている間に入出力エラーが発生しました。

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

[ EACCES]
ファイル記述子が参照するディレクトリで検索が許可されていません。
[ ENOTDIR]
ファイル記述子がディレクトリを参照していません。
[ EBADF]
引数 fd が有効なファイル記述子ではありません。

関連項目

chroot(2)

規格

chdir() システムコールは、 IEEE Std 1003.1-1990 (“POSIX.1”) に適合するはずです。

歴史

chdir() システムコールは、 Version 7 AT&T UNIX で登場しました。 fchdir() システムコールは、 4.2BSD で登場しました。
December 11, 1993 FreeBSD