GETCWD(3)

NOME
getcwd, get_current_dir_name, getwd - obtém o diretório de trabalho atual

SINÓPSE
#include <unistd.h>

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

DESCRIÇÃO
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 NULO 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.

Se buf é NULO, o comportamento de getcwd() não é definido.

Como uma extensão do padrão POSIX.1, Linux (libc4, libc5 e glibc) getcwd() aloca o 'buffer' dinamicamente usando a função malloc() se buf for NULO 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.

VALORES RETORNADOS
NULO 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. Os conteúdos do array apontados por buf é indefinido no erro.

DE ACORDO COM
POSIX.1.

VEJA TAMBÉM
chdir(2), free(3), malloc(3).

TRADUZIDO POR LDP-BR em 21/08/2000.

  Tradução:
Antonio Belloni <abelloni@ig.com.br>

  Revisão.:
André Luiz Fassone <lonely_wolf@ig.com.br>