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!