chdir()

Изменить текущую рабочую директорию

Прототип:

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

Аргументы:

path
Новая текущая рабочая директория.

Библиотека:

libc

Описание:

Функция chdir() изменяет текущую рабочую директорию на path, которая может быть относительной касательно текущей рабочей директории или абсолютной.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EACCES
Для части path отсутствует право поиска.
ELOOP
Слишком большой уровень символических ссылок или префиксов.
ENAMETOOLONG
Аргумент path длиннее PATH_MAX или часть пути длиннее NAME_MAX.
ENOENT
Путь, определяемый path, не существует, либо является пустой строкой.
ENOMEM
Недостаточно памяти для создания управляющей структуры.
ENOSYS
Функция chdir() не реализована для файловой системы, содержащей path.
ENOTDIR
Часть path не является директорией.

Примеры:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main( int argc, char* argv[] )
{
if ( argc != 2 )
{
fprintf( stderr, "Use: cd <directory>\n" );
return (EXIT_FAILURE);
}
if ( chdir( argv[1] ) == 0 )
{
printf( "Directory changed to %s\n", argv[1] );
return (EXIT_SUCCESS);
} else {
perror( argv[1] );
return (EXIT_FAILURE);
}
}

Классификация:

POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Предостережения:

Для процесса может существовать только одна текущая рабочая директория. В многопоточном приложении любой поток может вызвать chdir(), что вызовет изменение текущей рабочей директории для всех потоков процесса.

Тематические ссылки:

errno, fchdir(), getcwd(), mkdir(), rmdir()




Предыдущий раздел: Описание API системной библиотеки