Configurando um diretório de trabalho a partir do diretório raiz do Linux abre a possibilidade de acessar e trabalhar com toda a estrutura do arquivo nas várias pastas do sistema e do usuário.
A linguagem C fornece a função chdir () para configurar um diretório de trabalho e também tem uma função para consultar o diretório em que você está trabalhando.
Neste artigo do Linux Dint, você aprenderá a usar a função getCWD () para consultar o diretório em que está trabalhando atualmente. Explicaremos o funcionamento teórico dessa função, sua sintaxe, os tipos de seus argumentos de entrada e saída e cada tipo de dados.
Para usar essa função de maneira prática, aplicaremos tudo o que aprendemos através de um exemplo prático em que você aprende passo a passo sobre como usar essa função para recuperar o diretório de trabalho atual.
Sintaxe da função getCWD () na linguagem C
char *getcwd (char *buf, tamanho_t size);Descrição da função getCWD () na linguagem C
A função getcwd () consulta o diretório de trabalho atual do programa de chamada ou processo. Esta função retorna o ponteiro para um conjunto de caracteres "buf of size", que contém uma string com o caminho absoluto do diretório de trabalho atual.
Se a chamada para a função getcwd () for bem -sucedida, ela retornará o ponteiro para a string com o caminho do diretório de trabalho. Se ocorrer um erro, o resultado é um ponteiro nulo. Nesse caso, o código de identificação de erros é armazenado automaticamente na variável Global Errno.
Tanto a declaração da variável errno quanto as definições dos códigos de erro estão no “errno.H ”cabeçalho. No exemplo a seguir, veremos uma seção especial que explica como detectar e identificar os erros.
A função getcwd () é definida no “unistd.H ”cabeçalho. Para usá -lo, temos que incluí -lo em nosso “.Arquivo C ”da seguinte maneira:
#incluirComo consultar o diretório de trabalho atual com a função getCWD () na linguagem C
Neste exemplo, explicaremos como recuperar o diretório de trabalho atual e exibi -lo no console de comando.
O primeiro passo para fazer isso é incluir os cabeçalhos necessários. Nesse caso, eles são os “unistd.h "e" stdio.arquivos h ”. Em seguida, abrimos uma função principal () que retorna um valor de retorno vazio e no qual declaramos um caminho de matriz com 128 elementos do tipo char. Nesta matriz, a função getcwd () armazena a string com o diretório.
Depois que as variáveis necessárias forem declaradas, chamamos a função getcwd (). Passamos o argumento de entrada "BUF" como o ponteiro para o caminho da matriz e o tamanho do buffer como tamanho do argumento, como 128 neste caso.
Em seguida, usando a função printf (), imprimimos o “O diretório real é:” Mensagem seguida pelo caminho do diretório que é retornado pela função getcwd (). Aqui está o código completo para este exemplo:
#incluirEm seguida, vemos uma imagem com a compilação e execução deste código. Nesse caso, o getCWD () retorna o caminho absoluto do diretório inicial do usuário em sessão:
O mesmo ponteiro que GetCWD () retorna no argumento "BUF" retorna o seguinte resultado:
ponteiro para buff = getcwd (ponteiro para buff, tamanho);Isso permite que a função getcwd () seja chamada dos argumentos de entrada de outra função. O código a seguir mostra a chamada dos argumentos de entrada de printf ():
#incluirNesse caso, o printf () leva o ponteiro para a string que é retornada pelo getcwd () e a imprime no console de comando com apenas uma linha de código.
A imagem a seguir mostra que esse método tem o mesmo efeito que o programa no exemplo anterior:
Erros ao usar a função getCWD (): como detectá -los e identificá -los
Se ocorrer um erro ao chamar a função getcwd (), ele retorna um ponteiro nulo como resultado. A maneira mais fácil de detectar um erro é usar uma condição "se" onde a condição de entrada é determinada por um resultado que é igual a nulo. A seguir, é apresentado um trecho de código que usa esse método para detecção de erros:
if (getcwd (caminho, 128) == null)Quando ocorre um erro, um código numérico que o identifica é automaticamente armazenado na variável Global Errno, que é declarada no “errno.H ”cabeçalho.
Este cabeçalho também define os códigos de erro e sua representação numérica.
Você pode ver os erros que a função getCWD () pode gerar, sua representação numérica que é retornada na variável ERRNO e uma breve descrição de cada uma:
Definição | Valor em errno | Descrição |
Enoent | 2 | Não existe tal arquivo ou diretório. |
Eacces | 13 | Permissão negada |
Efault | 14 | Endereço ruim. |
Einval | 22 | Argumento inválido. |
Enametoolong | 36 | Nome do arquivo ou caminho muito tempo. |
A maneira mais fácil de identificar um erro é abrir uma chave condicional onde a condição de salto é a variável Global Errno e cada caso é uma definição de erro. Vemos o código para este método de detecção a seguir:
if (getcwd (caminho, 128) == null)As variáveis e os códigos de erro são definidos no “errno.H ”cabeçalho. Para usá -los, devemos incluí -los em nosso “.Arquivo C ”da seguinte maneira:
#incluirConclusão
Neste artigo do Linux, explicamos como usar a função getCWD () para determinar o diretório de trabalho atual do programa de chamada.
Vimos uma seção teórica sobre essa função, quais são seus argumentos de entrada e saída e que tipo de dados ele usa. Em seguida, aplicamos o que aprendemos através dos exemplos práticos com imagens e trechos de código que mostram como declarar as variáveis necessárias e chamar a função getcwd ().
Também incluímos uma seção especial onde listamos os diferentes erros que essa função pode gerar e explicamos como detectá -los.