DOKK / manpages / debian 10 / manpages-pt-dev / getcwd.3.pt
GETCWD(3) Manual do Programador Linux GETCWD(3)

getcwd, get_current_dir_name, getwd - Retorna o diretório de trabalho corrente

#include <unistd.h>

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

A função getcwd() copia o caminho absoluto do diretório de trabalho corrente para o vetor apontado por buf, que tem seu tamanho definido por size.

Se o caminho absoluto corrente for maior do que o buffer de size elementos, então a função irá retornar NULL e errno receberá o valor ERANGE; A aplicação (ou programa) deve verificar este tipo de erro, e alocar um buffer maior se necessário.

Como uma extensão do padrão POSIX.1, getcwd() aloca o buffer dinamicamente usando a função malloc() se buf for NULL no momento da chamada à função. Neste caso , o buffer alocado tem o tamanho de size a não ser que size seja zero, quando , então , buf é alocado do tamanho que for necessário. É possível (e recomendável) executar a função free() se os buffers forem obtidos desta maneira.

get_current_dir_name, que é prototipada somente se _GNU_SOURCE estiver definido, irá malloc(3) um vetor grande o suficiente para conter o nome do diretório corrente. Se a variável de ambiente PWD estiver inicializada, e seu valor estiver correto , então este valor será retornado.

getwd, que é prototipada somente se _BSD_SOURCE ou _XOPEN_SOURCE_EXTENDED estiverem definidos, não irá malloc(3) (alocar) nenhuma memória. O argumento buf deve ser um ponteiro para um vetor de tamanho mínimo , em bytes , de PATH_MAX .

getwd somente retorna os primeiros PATH_MAX bytes do caminho atual.

NULL em caso de falha (por exemplo, se o diretório corrente não pode ser lido), com errno recebendo o valor de acordo com o erro, e buf em caso de sucesso.

POSIX.1

chdir(2), free(3), malloc(3).

Antonio Belloni <abelloni@ig.com.br> (tradução)

21 de Julho de 1993 GNU