#include <unistd.h> char *getcwd(char *buf, size_t size); char *get_current_dir_name(void); char *getwd(char *buf);
Если текущий абсолютный путь требует буфера, длина которого превышает 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 байтов реального пути.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |