chdir関数は、現在の作業ディレクトリ(カレントディレクトリ)を変更します。

この関数は、C言語のライブラリ関数(標準関数)ではありませんので、コンパイラにより、使えない場合があります。

#include <unistd.h>
int chdir(const char *path);

*pathは変更するディレクトリのパス名を指定します。

戻り値として、処理が成功した場合は0を、失敗した場合は-1を返します。

プログラム 例

#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv)
{
  int     return_code = 0;

  if (argc == 2) {
    if (chdir(*(argv+1)) == 0) {
      printf('カレントディレクトリの変更に成功しました\n');
    }
    else {
      printf('カレントディレクトリの変更に失敗しました\n');
      perror('');
      return_code = 1;
    }
  }
  else {
    printf('実行時引数の数が不当です\n');
    return_code = 2;
  }

  return return_code;
}

例の実行結果

$ ls -ld DIR1 DIR2
ls: cannot access DIR1: そのようなファイルやディレクトリはありません
drwxr-xr-x 2 user users 4096 2008-07-04 16:27 DIR2
$
$ ./chdir.exe DIR2
カレントディレクトリの変更に成功しました
$
$ ./chdir.exe DIR1
カレントディレクトリの変更に失敗しました
No such file or directory
$
$ ./chdir.exe /root
カレントディレクトリの変更に失敗しました
Permission denied
$