Trabalhando com arquivos em Linux com C

Neste artigo, irei descrever como trabalhar com arquivos em C no linux.

Segue o exemplo do Makefile do projeto:


all: compile

compile:
        gcc files.c -o files

Excluindo arquivos

Em programação, é comum manipularmos arquivos de diversas formas. Uma boa prática é sempre a limpeza da máquina, para evitar estouro de memoria de disco.

Para isso usaremos o comando abaixo:

int unlink(const char *pathname);

Para demonstrar isso, iremos apresentar e comentar um programa (files.c).

#include <unistd.h>
#include <stdio.h>



int ApagaArquivo(char *arquivo){
        return unlink(arquivo);
}

void main(void){
        char arquivo[50];
        sprintf(arquivo,"./teste.txt");
        if (ApagaArquivo(arquivo)==0){
                printf("Arquivo apagado\n");
        }
}

Inicialmente iremos utilizar a lib unistd.h do linux, conforme apresentado a cima.

A função ApagaArquivo, possui um unico comando, que é o unlink, que possui a seguinte sintaxe:

int unlink(const char *pathname);

O parâmetro pathname, é o nome do arquivo com seu respectivo caminho.

Link de arquivo

O Comando link cria uma referencia de um arquivo, com outro nome ou em outro local.

Para realizar isso usa-se o comando link.

int link( const char *oldpath, const char *newpath);

No exemplo abaixo, podemos ver a modificação do nosso exemplo files.c:

#include <unistd.h>
#include <stdio.h>



int ApagaArquivo(char *arquivo){
        return unlink(arquivo);
}

int Linkando(char *origem, char *arquivo){
        return link(origem,arquivo);
}

void main(void){
        char arquivo[50];
        sprintf(arquivo,"./teste.txt");
        if(ApagaArquivo(arquivo)==0){
                printf("Arquivo apagado\n");
        }
        char origem[50];
        sprintf(origem,"./teste.old");
        if(Linkando(origem,arquivo)==0){
                printf("Arquivo linkado!\n");
        }
}

A função Linkando, retrata a funcionalidade em si, nela temos dois parametros:

  • origem
  • arquivo

No origem, temos o arquivo que gerará um link (referência). Percebemos que indicamos o arquivo teste.old. Em seguida temos o arquivo, que é de fato o que será criado.

Podemos ver aqui, como foi montado nosso projeto.

Agora ao rodar nosso programa temos a seguinte diferença:

Percebam que o arquivo teste.old e teste.txt tem o mesmo tamanho, para ter certeza que é apenas um link, vamos mudar o tamanho do teste.old, e verificar se o teste.txt tambem modifica.

Apos a mudança de tamanho do arquivo original, verificamos que o seu link também modifica.

Em breve publicarei outros comandos relacionados a manipulação de arquivos no linux, para que eu possa continuar tralhando, envie-nos seus feedbacks sobre os artigos.

Mande-nos um email para marcelomaurinmartins@gmail.com passando o que deseja que eu escreva.

Vida longa e prospera a todos!