Como usar a gravação de chamada do sistema em C

How Use Write System Call C



A chamada do sistema serve como o gateway principal entre os programas e o kernel do sistema operacional Linux. Embora você quase certamente precise ter uma chamada de sistema ao longo de sua carreira de programação C, se você almeja uma produtividade excepcional ou um certo estilo de recurso, o repositório Glibc ou outras bibliotecas padrão encontradas em distribuições Linux populares serão suficientes para a grande maioria de seus requisitos. Neste guia, estabeleceremos um conceito sobre a chamada Write System em linguagem C.

Sintaxe:

#incluir

ssize_tescrever(int fd, const void*buf, size_t count);

Nesta sintaxe acima, a primeira linha mostra a biblioteca para chamadas do sistema. Na segunda linha, fd representa um descritor de arquivo que é, de fato, um número que especifica o arquivo aberto de um processo. A palavra-chave * buf significa buffer. Este contém todos os dados nele. Em seguida é a contagem. É o número de bytes a serem gravados em um descritor de arquivo do buffer.







Pré-requisitos de instalação:

Para executar qualquer código de linguagem C, você deve primeiro instalar alguns pacotes na distribuição Linux. Se você deseja ver mais informações sobre a chamada de sistema de gravação, você deve instalar o pacote manpages-dev para fazer isso. Para abrir o terminal usando a tecla de atalho Ctrl + Alt + T. Após abri-lo, escreva o comando apt install abaixo seguido pela palavra-chave manpages-dev para instalar manpages.



$sudoaptoinstalarmanpages-dev



A instalação das páginas de manual levará algum tempo. Espere até que seja concluído.





Após a instalação, você pode ver as informações adicionais sobre a chamada do sistema write por meio do comando below man no shell.



$cara 2 escrever

A página de manual de saída para o comando de gravação é fornecida abaixo. Você pode ler as informações sobre isso. Pressione q para sair do manual.

Agora é hora de instalar o pacote Gcc em seu sistema Linux para trabalhar na linguagem C. Para isso, abra o shell e escreva o comando apt install abaixo seguido da palavra-chave gcc.

$sudoaptoinstalar gcc

Enquanto isso, durante a instalação, pode ser solicitado que você confirme esta ação de instalação pressionando y para continuar e n para interrompê-la. Então, toque na tecla y e pressione a tecla Enter.

Ele será instalado em seu sistema em alguns minutos, e as últimas linhas de saída serão as mostradas no instantâneo abaixo.

Exemplos:

Vejamos alguns exemplos de uma chamada de sistema de gravação em nossa distribuição Linux. Portanto, abra o shell da linha de comando e crie um novo arquivo C nele com a extensão ponto c. Você deve usar o comando nano abaixo para criá-lo e abri-lo rapidamente. Demos a ele um nome como new.c.

$nanonew.c

A janela abaixo será aberta. Agora você tem que escrever o código afixado neste arquivo. Neste código, incluímos uma biblioteca unistd.h primeiro. Em seguida, criamos a função principal e, dentro dessa função, criamos uma chamada de sistema de escrita. Nesta chamada de sistema, o primeiro parâmetro é o descritor de arquivo. Nesse caso, o inteiro 1 representa a tela do dispositivo de saída e é fixo. Portanto, nossa saída será mostrada na tela. O segundo parâmetro mostra os dados do buffer. Você pode adicionar qualquer coisa a ele. E o último parâmetro mostra o número de contagem dos dados fornecidos no parâmetro buffer. Como mencionamos 5 como o número de contagem, ele mostrará apenas os primeiros 5 bytes dos dados do buffer e ignorará os bytes restantes. Salve este código usando a tecla de atalho Ctrl + S e saia deste arquivo usando o comando Ctrl + X.

#incluir

Int principal()

{Escrever(1Aqsa Yasin5);}

Agora, no terminal, tente o comando gcc abaixo para compilar este código recém-criado com um nome de arquivo.

$gccnew.c

Vamos verificar este código usando o arquivo a.out padrão criado em tempo de execução. Portanto, tente o comando a.out abaixo para verificar a saída da chamada de sistema de gravação. Temos que usá-lo com ./ para escolher o arquivo do diretório atual.

$./a.out

A saída que você pode ver exibiu apenas a palavra Aqsa por causa do número de contagem 5.

Vamos mudar nosso código um pouco. Alteramos o número da contagem para 11 porque temos um total de 11 bytes em nosso buffer de dados Aqsa Yasin. Portanto, desta vez, a saída mostrará todos os bytes de dados de string Aqsa Yasin. Salve este arquivo usando Ctrl + S e saia usando a tecla de atalho Ctrl + X.

Vamos compilar o código atualizado usando o compilador gcc recém-instalado para distribuição Linux. Tente o mesmo comando gcc junto com o nome de um arquivo como new.c.

$gccnew.c

Agora exiba a saída do mesmo código usando o comando a.out anterior conforme abaixo. A saída mostra a string completa Aqsa Yasin do buffer.

$./a.out

Vamos ver como o código funciona quando consideramos o número de contagem maior do que o número total de bytes que os dados do buffer contêm. Portanto, estamos usando a contagem de 30. Salve e feche o arquivo.

Compile o mesmo arquivo atualizado usando o comando gcc como abaixo.

$gccnew.c

Agora execute o arquivo usando o comando a.out, e a saída mostrará os dados do buffer, bem como algum valor de lixo com ele, conforme exibido na saída do instantâneo abaixo. $ ./A.out

Você também pode verificar o número total de bytes gravados no arquivo usando o código abaixo no mesmo arquivo.

Compile o código pela instrução gcc.

$gccnew.c

A saída mostra o número total de bytes, incluindo dados do buffer e quebra de linha, usando o comando a.out.

$./a.out

Conclusão:

Neste tutorial, elaboramos o conceito para usar a chamada do sistema Write em C. Experimente todos os exemplos para entender a ideia da chamada do sistema Write usando este artigo.