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.