Programação C

Como usar a chamada de sistema aberto em C

Como usar a chamada de sistema aberto em C

As chamadas de 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 também. 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. Estamos usando o Ubuntu 20.04 para obter alguma chamada de sistema “Open” prática.

Instalar Bibliotecas

A linguagem C requer que alguns pacotes de biblioteca adicionais sejam instalados como pré-requisitos. Primeiro de tudo, você precisa instalar o pacote manpages-dev para verificar as informações sobre chamadas de sistema. Abra o terminal de linha de comando da á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 foi fornecida abaixo.

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

$ man 2 aberto

A página do manual de saída para a chamada de sistema "Abrir" foi mostrada abaixo. Você pode ver as informações adicionais sobre isso. 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 de sistema. Existem três sintaxes disponíveis para a chamada de sistema aberto. A primeira sintaxe mostra o ”caminho”, que é o nome de um arquivo a ser aberto. O segundo parâmetro, “sinalizadores”, mostra o modo de um arquivo, e.g., ler ou escrever. 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 no Ubuntu 20.04 distribuição Linux. Para isso, execute a instrução abaixo no shell para fazer isso.

$ sudo apt install gcc

Requer que você toque em “Y” para continuar a instalar 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 "Aberta". Primeiro, abra o shell de comando e crie um novo arquivo de texto “test.txt ”usando o comando de toque simples da seguinte forma:

teste $ touch.TXT

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

teste $ cat.TXT

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

$ nano novo.c

O arquivo GNU nano abaixo será aberto. Você deve digitar o código de linguagem 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 aberta. 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 “teste.txt ”e devolvê-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. Salve este arquivo usando Ctrl + S e feche-o usando o comando Ctrl + X.

#incluir
#incluir
#incluir
#incluir
int main ()

int n, fd;
char buf [50];
fd = aberto (“teste.txt ”, O_RDONLY);
n = ler (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.

$ gcc new.c

Agora é hora de verificar a saída do código C para uma chamada de sistema aberta. Vamos usar o seguinte.fora do comando no shell. A saída exibe os 10 bytes do conteúdo de um arquivo “teste.TXT".

$ ./uma.Fora

Vamos dar outro exemplo para escrever 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 penúltima linha do código usou a chamada de sistema aberto para criar um novo arquivo chamado “destino” 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 o a.a instrução no shell como abaixo. Não há saída porque a saída foi redirecionada para o arquivo recém-criado "destino".

$ ./uma.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, o levará a implementar o programa desejado.

Como usar o Xdotool para estimular cliques do mouse e pressionamentos de tecla no Linux
Xdotool é uma ferramenta de linha de comando gratuita e de código aberto para simular cliques do mouse e pressionamentos de tecla. Este artigo irá cob...
Os 5 principais produtos ergonômicos de mouse de computador para Linux
O uso prolongado do computador causa dor no pulso ou nos dedos? Você está sofrendo de rigidez nas articulações e constantemente precisa apertar as mão...
Como alterar as configurações do mouse e touchpad usando Xinput no Linux
A maioria das distribuições Linux vem com a biblioteca “libinput” por padrão para lidar com eventos de entrada em um sistema. Ele pode processar event...