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.cPara 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.ForaVamos 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.