getcwd()

Получить наименование текущей рабочей директории

Прототип:

#include <unistd.h>
char * getcwd( char *buffer,
size_t size );

Аргументы:

buffer
NULL, или указатель на область памяти где функция может хранить наименование директории.
size
Размер буфера в байтах.

Библиотека:

libc

Описание:

Функция getcwd() возвращает наименование текущей рабочей директории. buffer указывает на область памяти размером не менее size байт, куда будет помещено NUL-терминированное имя текущей рабочей директории.

Максимальный размер буфера равен PATH_MAX + 1 байт. Подробнее в <limits.h>.


Note: Функция выделяет память для наименования директории; пользовательское приложение отвечает за освобождение этой области памяти, когда она будет не нужна.

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

Адрес строки, содержащей наименование текущей рабочей директории.

Если возникла ошибка функция возвращает NULL, код ошибки записывается в errno.

Коды ошибок:

EINVAL
Аргумент size отрицательный или равен 0.
ELOOP
Слишком много уровней вложенности символических ссылок.
ENOSYS
Функция getcwd() не реализована для файловой системы в текущей рабочей директории.
ERANGE
Область памяти слишком мала (задается аргументом size), чтобы хранить наименование текущей рабочей директории.

Примеры:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <limits.h>
int main( void )
{
char *cwd;
char buff[PATH_MAX + 1];
cwd = getcwd( buff, PATH_MAX + 1 );
if ( cwd != NULL )
{
printf( "My working directory is %s.\n", cwd );
}
return (EXIT_SUCCESS);
}

Код генерирует следующий вывод:

$ ./a.out My working directory is /home/bill.

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

POSIX 1003.1

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

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

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

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

chdir(), errno, fchdir(), mkdir(), rmdir()




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