Programação C

Como usar a chamada do sistema Fsync em C

Como usar a chamada do sistema Fsync em C

O fsync é usado para coordenar o estado in-core de um arquivo com qualquer dispositivo de armazenamento. A chamada de sistema fsync () passa (“limpa”) todo o conteúdo interno alterado de (i.e., buffer alterado para) o descritor de arquivo fd para uma máquina de disco (ou qualquer outro dispositivo de armazenamento permanente) onde tal arquivo permanece. Ele até limpa os detalhes do arquivo. A chamada do sistema fsync funciona em um único arquivo. Todas as atualizações do arquivo serão eliminadas. Se várias tarefas forem editadas no mesmo arquivo, a chamada do sistema fsync será suspensa antes que todas as atualizações sejam transferidas para o disco. Se o sistema anunciar que a conversão foi bem-sucedida, a chamada será bloqueada. Usar fsync () não garante que talvez a inclusão do arquivo no sistema de arquivos também tenha entrado no disco. Um fsync () apropriado no descritor de arquivo da pasta é, no entanto, necessário para isso.

Pré-requisitos de instalação:

Portanto, a chamada do sistema fsync precisa que algumas bibliotecas sejam instaladas para funcionar. Se alguém quiser verificar as informações adicionais sobre o comando fsync, ele / ela deve ter os pacotes manpages-dev instalados em seu sistema Linux. Então, veremos como fazer isso. Use a tecla Ctrl + Alt + T do teclado para iniciar o terminal de linha de comando do Linux. Agora, para instalar o pacote manpages-dev, experimente o seguinte comando apt install, seguido por um pacote chamado “manpages-dev”. O processo de instalação exigirá a senha de sua conta para que o Linux prossiga. Então, insira sua senha atual do Linux e pressione a tecla Enter no teclado. Irá rapidamente iniciar a instalação e configuração das páginas de manual no seu sistema Linux. Sente-se até que o processo de instalação seja concluído.

$ sudo apt install manpages-dev

Após a instalação, você pode usar o comando abaixo para verificar as informações sobre o sistema fsync.

$ man 2 fsync

A saída para o comando man é anexada abaixo. Você pode ler qualquer informação a respeito para entender o conceito da chamada de sistema “fsync” no sistema Linux. Pressione o botão “q” do teclado para sair desta janela.

Outro pré-requisito necessário para usar o ID de chamada do sistema fsync do compilador GCC. Isso ocorre porque estamos usando a chamada de sistema fsync dentro da linguagem C. Então, para executar e compilar o código da linguagem C, devemos ter algum pacote de compilador instalado em nosso sistema. Então, aqui temos um compilador GCC. Você pode instalá-lo usando o comando muito simples sudo apt conforme abaixo. Ele completará sua instalação em alguns minutos, e você pode facilmente escrever códigos C em arquivos.

$ sudo apt install gcc

Exemplo:

Vamos começar a trabalhar no comando fsync para entendê-lo bem. Em primeiro lugar, você deve criar um arquivo do tipo C usando o editor nano no shell da linha de comando. Para isso, tente executar a consulta simples abaixo no shell.

$ nano novo.c

Depois que o arquivo foi criado e aberto, é hora de escrever algum código C. Então você pode ver o código abaixo no arquivo nano. As primeiras 7 linhas possuem arquivos de cabeçalho que devem ser incluídos no arquivo do editor para o correto funcionamento da chamada de sistema “fsync”. Após esses arquivos de cabeçalho, definimos a função principal com tipo de retorno inteiro como “int”. Esta função contém dois parâmetros. Um deles é um tipo inteiro e o outro é uma matriz de tipo de caractere. No espaço da função principal, declaramos uma string de tipo de caractere “* str” e definimos um valor de tipo de string para ela. Depois disso, também declaramos duas variáveis ​​de tipo inteiro que serão usadas como descritores de arquivo nas linhas seguintes. Na próxima linha, usamos a função create system call para criar um novo arquivo chamado “test.txt ”e privilégios de leitura e gravação como um deslocamento no parâmetro. Retornamos o conteúdo deste arquivo para um descritor de arquivo “fd”. Nós definimos a declaração if neste código C. Se o valor ou o ponteiro do índice do descritor de arquivo for “-1”, será lançado o erro ao chamar a função creat () para criar um novo arquivo. O descritor “fd” menor que “-1” significa que o ponteiro está na posição -1.

A função exit () será chamada antes do fechamento da instrução if. Em seguida, temos usado a chamada do método write para coletar o valor da string do buffer e gravá-lo no arquivo “test.txt ”usando o descritor de arquivo“ fd ”. Esses dados foram devolvidos à variável “ret”. Se o valor da variável “Ret” for menor que -1, isso significa que os dados não foram gravados em um arquivo. Então, você tem que chamar novamente a função de escrita e sair da instrução if. Nós definimos a chamada de sistema fsync e damos a ela um descritor de arquivo “fd” como um valor de parâmetro para sincronizar o descritor de arquivo para um dispositivo de disco. Ao chamar o método “close”, ele gravará rapidamente os dados em uma unidade de disco e fechará o descritor de arquivo. Depois disso, a função principal será fechada. Salve este arquivo usando uma tecla de atalho do teclado, “Ctrl + S,” e feche o arquivo “novo.c ”usando a tecla de atalho“ Ctrl + X ”.

Depois de fechar o arquivo nano, agora é hora de você compilar o código apresentado acima. Para a compilação do código, temos que usar o compilador gcc. Portanto, execute a consulta gcc abaixo para compilar o “novo.c ”arquivo.

$ gcc new.c

Agora, temos que executar este código usando o método simples.o comando no shell como abaixo. Este comando simplesmente executará o código e não retornará nada, mas os dados foram gravados em uma unidade de disco na parte de trás do processo.

$ ./uma.Fora

Verifique o arquivo que foi criado no código C e contém um valor de string.

teste $ cat.TXT

Conclusão

Discutimos brevemente um exemplo muito simples e linear da chamada do sistema fsync para entender seu conceito.Espero que agora você possa usar facilmente a chamada de sistema fsync no Linux.

Como usar o AutoKey para automatizar jogos Linux
AutoKey é um utilitário de automação de desktop para Linux e X11, programado em Python 3, GTK e Qt. Usando sua funcionalidade de script e MACRO, você ...
Como mostrar o contador de FPS em jogos Linux
Os jogos Linux tiveram um grande impulso quando a Valve anunciou o suporte Linux para o cliente Steam e seus jogos em 2012. Desde então, muitos jogos ...
Como baixar e jogar Sid Meier's Civilization VI no Linux
Introdução ao jogo Civilization 6 é uma versão moderna do conceito clássico introduzido na série de jogos Age of Empires. A ideia era bastante simples...