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
Antonio Belloni <abelloni@ig.com.br> (tradução)
21 de Julho de 1993 | GNU |