Como usar a chamada de sistema aberto em C

How Use Open System Call C



As chamadas do sistema são usadas nas distribuições Linux para fornecer uma porta de entrada no sistema operacional Linux e nos programas. O sistema operacional Linux usa a biblioteca Glibc para suportar chamadas de sistema enquanto usa a linguagem C. Existem muitas outras maneiras de usar chamadas de sistema. Neste guia de artigo, discutiremos a chamada de sistema aberto no sistema Linux. A chamada de sistema Open foi usada para abrir o arquivo especificado no caminho rapidamente. Ele nos informa sobre o descritor de um arquivo criado pelo usuário. Temos usado o Ubuntu 20.04 para obter algumas chamadas práticas do sistema Open.

Instalar Bibliotecas

A linguagem C requer que alguns pacotes de biblioteca adicionais sejam instalados como pré-requisitos. Em primeiro lugar, você precisa instalar o pacote manpages-dev para verificar as informações sobre chamadas de sistema. Abra o terminal de linha de comando na área de atividade e execute a instrução abaixo para instalar as páginas de manual.







$ sudo apt install manpages-dev



A saída para a conclusão da instalação é fornecida abaixo.







Agora vamos verificar a chamada de sistema aberta usando o comando man conforme abaixo.

$ man2abrir



A página man de saída para a chamada de sistema Open foi mostrada abaixo. Você pode ver as informações adicionais a respeito. Pressione o botão q para sair.

A sintaxe acima mostra as três primeiras linhas de bibliotecas necessárias a serem adicionadas para chamadas do sistema. Existem três sintaxes disponíveis para a chamada de sistema aberto. A primeira sintaxe mostra o nome do caminho, que é o nome de um arquivo a ser aberto. O segundo parâmetro, sinalizadores, mostra o modo de um arquivo, por exemplo, leitura ou gravação. A segunda sintaxe pode ser usada quando o arquivo não existe. O modo de parâmetro é usado para mostrar os privilégios no arquivo.

Agora é hora de instalar o compilador GCC para a depuração do código C na distribuição Linux Ubuntu 20.04. Para isso, execute a instrução abaixo no shell para fazer isso.

$ sudo apt install gcc

Requer que você toque em Y para continuar instalando o compilador GCC, caso contrário, pressione o botão n para fechar a instalação. Então, aperte o botão y e pressione Enter para continuar.

A saída para a conclusão é mostrada abaixo.

Exemplo 01

Vejamos o exemplo muito simples de uma chamada de sistema Open. Primeiro, abra o shell de comando e crie um novo arquivo de texto test.txt usando o comando de toque simples da seguinte maneira:

$tocartest.txt

Adicione alguns dados manualmente. Você pode ver os dados em um arquivo usando o comando cat abaixo.

$gatotest.txt

Agora vamos criar um novo arquivo C usando um comando nano no shell, conforme mostrado abaixo.

$nanonew.c

O arquivo GNU nano abaixo será aberto. Você deve digitar o código de idioma C abaixo nele. Você pode ver que adicionamos os pacotes de biblioteca necessários para que o código C seja executado corretamente. Depois disso, definimos a função principal para trabalhar em uma chamada de sistema Open. Declaramos duas variáveis ​​inteiras. A variável n é usada para contar os valores do buffer e o fd é usado para o descritor de arquivo. Declaramos a matriz de buffer do tipo de caractere como buf com tamanho 50. A chamada de sistema aberto foi usada para ler o conteúdo do arquivo test.txt e retorná-lo ao descritor de arquivo. O O_RDONLY foi usado para fins de leitura. A próxima linha mostra a chamada de sistema de leitura para coletar os 10 bytes do buffer e retorná-los ao inteiro n. Além disso, o comando write foi usado para escrever o conteúdo ou dados do buffer no descritor de arquivo, que é a tela de saída. No nosso caso agora. Salve este arquivo usando Ctrl + S e feche-o usando o comando Ctrl + X.

#incluir
#incluir
#incluir
#incluir

inta Principal()
{
intn,fd;
Caracteresbuf[cinquenta];
fd=abrir(teste.TXT,O_RDONLY);
n=leitura(fd,buf, 10);
escrever(1 ,buf, 10);

Vamos primeiro compilar o código C para uma chamada de sistema aberta usando o comando gcc abaixo.

$gccnew.c

Agora é hora de verificar a saída do código C para uma chamada de sistema aberta. Vamos usar o comando a.out abaixo no shell. A saída exibe os 10 bytes do conteúdo de um arquivo test.txt.

$./para.Fora

Vamos dar outro exemplo para gravar o conteúdo de um arquivo em outro arquivo usando uma chamada de sistema Open. Para criar um novo arquivo C usando o comando nano conforme abaixo.

$ nano novo.c

Portanto, pegue o mesmo código com uma pequena alteração nele. Definimos outro descritor de arquivo no código como fd1. Todo o código é o mesmo, exceto por uma linha adicional. A segunda última linha do código usou a chamada de sistema aberto para criar um novo arquivo chamado target usando O_CREAT e o modo, somente gravação como O_WRONLY. 0642 mostra os privilégios atribuídos a este arquivo. E o arquivo foi devolvido a um novo descritor de arquivo. A próxima linha mostra um comando para escrever os bytes de conteúdo no buffer de acordo com seu descritor de arquivo. Salve o arquivo e feche-o.

Execute o comando gcc compile para depurar o arquivo de linguagem C.

$ gcc new.c

Para exibir a saída do código C, tente a instrução a.out no shell como abaixo. Não há saída porque a saída foi redirecionada para o destino de arquivo recém-criado.

$./para.Fora

Vamos verificar os dados de um destino de arquivo usando o comando cat. A saída mostra que o arquivo contém 20 bytes.

alvo $ cat

Conclusão

No tutorial acima, explicamos a você como usar uma chamada de sistema aberta em linguagem C usando o compilador gcc. Com a ajuda de diferentes exemplos explicados neste guia, você poderá implementar o programa desejado.