Função aberta POSIX em C

Função aberta POSIX em C
Embora existam muitas bibliotecas em C, a biblioteca Posix é muito conhecida entre os desenvolvedores devido à sua ampla gama de funções de chamada do sistema, especialmente a função do sistema exige "arquivos". Biblioteca POSIX para sistema operacional Linux fornece uma variedade de funções. Existe uma função aberta () que é usada propositadamente para abrir um arquivo específico de um sistema em uma dessas chamadas POSIX. Ele utiliza muitas opções para criar, abrir, ler, escrever e fazer muitas coisas nos arquivos Linux.

Exemplo 1:
Vamos dar uma olhada no primeiro exemplo para usar a função Open () do POSIX para simplesmente criar e abrir os arquivos em um modo somente leitura. Para isso, use a consulta Touch em seu shell para criar um arquivo C. Pode ser salvo na pasta de trabalho atual.

Abra seu arquivo recém -gerado, eu.e. abrir.C, no editor para adicionar algum trecho de código dentro dele, como na imagem apresentada. Inicie seu código com o uso de cabeçalhos padrão C como o stdio.h, fcntl.h e errno.h que estão propositadamente incluídos para entrada/saída padrão, uso do arquivamento e exibir os erros, respectivamente. Existe uma função principal () para executar a execução. Criamos uma variável inteira "f" usada como descritor de arquivo para obter o valor retornado da chamada de função "Open ()". A função Open () usa o nome do arquivo de texto junto com duas opções - a opção "O_RDONLY" para ler o arquivo já existente e a opção "O_Creat" para criar um arquivo se não existir.

A instrução printf () exibe o valor retornado usando o descritor "f". O valor de "f" é igual a "-1". Ele lança um erro que falhamos em abrir ou criar um arquivo junto com uma mensagem de erro através da função perror (). Caso contrário, a instrução printf () exibe a mensagem de sucesso em nossa tela. O código é concluído usando a instrução Return 0.

#incluir
#incluir
#incluir
int main ()
int f = aberto ("novo.txt ", o_rdonly | o_creat);
printf ("Valor do descritor de arquivo = %d \ n", f);
if (f == -1)
Perror ("Falha ao criar/abrir um arquivo… \ n);
outro
printf ("arquivo criado com sucesso!\ n ");
retornar 0;

Depois que o código é salvo com sucesso, compilamos-o com a ferramenta “GCC” da linha de comando como o compilador C que está disponível no sistema Linux. Escreva a palavra -chave "GCC" com o nome de um arquivo "Abra.C ”e execute -o. A compilação é próspera e tentamos o “./a.OUT "consulta para executar o código compilado. A saída mostra o valor de "f" junto com uma mensagem de sucesso que indica que finalmente criamos um novo arquivo de texto com sucesso. A saída de instrução “LS” mostra o vermelho destacado “Novo.Arquivo TXT ”criado pela opção“ O_CREAT ”da função Open () na pasta de trabalho atual.

Vamos utilizar o mesmo código para obter um erro se a função Open () se encontrar incapaz de ler um arquivo que não existe no sistema. Usando a mesma estrutura do código, atualizamos a primeira linha de código da função principal (). Aqui, removemos a opção "O_CREAT" para criar um novo arquivo usando a chamada de função aberta () e usamos apenas a opção "O_RDONLY".

Além disso, mudamos o nome de um arquivo para “testar.txt ”que não existe em nossa pasta de trabalho. Isso significa que a função Open () não consegue abrir o arquivo e a função perror () exibe a respectiva mensagem de erro no console. Vamos salvar este arquivo C atualizado.

#incluir
#incluir
#incluir
int main ()
int f = aberto ("teste.txt ", o_rdonly);
printf ("Valor do descritor de arquivo = %d \ n", f);
if (f == -1)
Perror ("Erro: [falhou ao abrir um arquivo] :);
outro
printf ("Arquivo aberto com sucesso!\ n ");
retornar 0;

Executar o arquivo após a execução lança o erro "Nenhum arquivo ou diretório".

Exemplo 2:
Você pode usar a chamada de função open () para ler dados de string de um arquivo específico usando as matrizes. Para isso, você só precisa do “unistd.h "e" fcntl.bibliotecas H ”. A execução do código começa a partir do seu método principal "Main ()" que declara uma matriz do tipo de caractere "a" do tamanho 30. O descritor de arquivo inteiro usa o valor retornado da chamada de função aberta (). A função Open () que é usada aqui lança sua opção "O_RDONLY" para abri-la no modo somente leitura. A função read () na próxima linha é usada para armazenar um total de 12 caracteres a partir do “arquivo.txt ”usando seu descritor“ f ”e salve -o na matriz de personagens“ a ”.

Se a função read () for bem -sucedida para ler dados de um arquivo, ele retornará algum valor para a variável "n". A chamada da função write () usa a variável "n" para escrever os dados no console que é salvo apenas na matriz "a".

#incluir
#incluir
int main ()
char a [30];
int f = aberto ("arquivo.txt ", o_rdonly);
int n = leia (f, a, 12);
Escreva (1, a, n);

Agora, precisamos criar o mesmo nome de arquivo de texto “Arquivo.txt ”na mesma pasta e adicione alguns dados de texto nele, conforme apresentado usando a instrução“ CAT ”do Linux. Nós compilamos e executamos nosso “aberto.Arquivo C ”e obtenha os 12 primeiros caracteres do“ arquivo.txt ”são exibidos na concha.

Exemplo 3:
Você pode usar a chamada de função open () para copiar os dados de texto de um arquivo para outro com uma ligeira alteração no código. Nós lançamos o mesmo exemplo de snippet de código e fazemos algumas alterações em algumas de suas linhas. O tamanho do buffer de caracteres “A” é atualizado para 50 e o descritor F1 abre o arquivo “Arquivo.txt "em um modo" somente leitura "usando o" O_RDONLY "em uma função aberta (). A função read () usa o descritor "F1" para ler 25 caracteres do "arquivo.Arquivo txt ”e salve -os para buffer a matriz“ A ”. O valor de sucesso/falha retornado é salvo para variável "n".

Outro descritor de arquivo “F2” é usado aqui para criar um novo arquivo chamado “Fonte.txt ”na mesma pasta usando a opção“ 0_creat ”em um método“ aberto ”e com um modo“ somente gravação ”(O_WRONLY) com o valor 0642 para escrever. A chamada de função write () usa o valor "n" para obter os dados do buffer de caracteres "A" e analisá -lo ao segundo arquivo "Origem.txt ”usando seu descritor“ f2 ”. Agora, vamos executar o código a seguir para ver o que obtemos na saída:

#incluir
#incluir
int main ()
char a [50];
int f1 = aberto ("arquivo.txt ", o_rdonly);
int n = leia (f1, a, 25);
int f2 = aberto ("fonte.txt ", o_creat | o_wronly, 0642)
escreva (f2, a, n);

Agora, temos um “arquivo.txt "e" aberto.Arquivo C ”na pasta atual. Você pode ver os dados dentro do “arquivo.TXT". Na abertura.Execução do arquivo C ”, a fonte.O arquivo txt é gerado e os 25 caracteres do “arquivo.O arquivo txt "é copiado para a" fonte.arquivo txt ”também.

Conclusão

Este guia é simples, mas cheio de exemplos de C para utilizar e aprender o POSIX “Open ()” Chamada de função. Usando todos os exemplos fornecidos, você nunca falhará ao usar os arquivos em C.