Документация по LinuxLinuxDoc.Ru 🔍

getcwd, get_current_dir_name, getwd - возвращает текущий рабочий каталог

НАЗВАНИЕ
getcwd, get_current_dir_name, getwd - возвращает текущий
рабочий каталог

СИНТАКСИС
#include

char *getcwd(char *buf, size_t size);
char *get_current_dir_name(void);
char *getwd(char *buf);

ОПИСАНИЕ
Функция getcwd() копирует абсолютный путь к текущему
рабочему каталогу в массиве, на который указывает buf,
имеющий длину size.

Если текущий абсолютный путь требует буфера, длина
которого превышает size, то возвращается NULL, а errno
принимает значение ERANGE; приложение должно проверить,
возникла эта ошибка или нет и, если необходимо, выделить
буфер большего размера.

Если buf равно NULL, то поведение getcwd() становится
неопределенным.

Расширение стандарта POSIX.1 для Linux (libc4, libc5,
glibc) предусматривает следующее: если при вызове buf
равно NULL, getcwd(), то буфер выделяется динамически с
помощью функции malloc(). В этом случае выделенный буфер
имеет размер size; если size равно нулю, то выделяется buf
необходимого размера. Возможно (и даже рекомендуется)
после использования освободить выделенные таким образом
буферы с помощью free().

get_current_dir_name (которая имеет прототип только в том
случае, если определено значение _GNU_SOURCE) выделит с
помощью malloc(3) массив, достаточно большой для помещения
в него имени текущего каталога. Если установлена и имеет
правильное значение переменная окружения PWD, то будет
возвращено ее значение.

getwd (имеющая прототип только в том случае, если
определено значение _BSD_SOURCE или
_XOPEN_SOURCE_EXTENDED) не будет выделять память с помощью
malloc(3). Аргумент buf должен быть указателем на массив
длиной как минимум PATH_MAX байтов. getwd возвращает
только первые PATH_MAX байтов реального пути.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
NULL при ошибках (например, текущий каталог считывать
невозможно) и при установленной соответствующим образом
errno; при успешной работе возвращается buf. Содержимое
массива buf при ошибке не опредеелно.

КОДЫ ОШИБОК

EINVAL Аргумент size равен нулю, а buf не является пустым
указателем.

ERANGE Аргумент size меньше, чем длина имени текущего
каталога. Необходимо выделить массив большего
размера и попробовать еще раз.

EACCES Нет прав на чтение или поиск одного из компонентов
пути файла.

СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1
Читать новости Linux в Telegram
Linux - getcwd, get_current_dir_name, getwd - возвращает текущий рабочий каталог
Мы в соцсетях ✉