Exemple "copie de fichiers" :
// Programme de copie de fichiers
// Compiler avec : gcc -Wall -g copie.c -o copie
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define MAX_BLOC 2048
int main(int argc,char *argv[]){
if(argc!=3){
fprintf(stderr,"Syntaxe : %s <original> <copie>\n",argv[0]);
exit(EXIT_FAILURE);
}
char *original=argv[1];
char *copie=argv[2];
int dorig=open(original,O_RDONLY);
if(dorig<0){
fprintf(stderr,"Impossible d'ouvrir '%s' en lecture !\n",original);
exit(EXIT_FAILURE);
}
int dcopie=open(copie,O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
if(dcopie<0){
fprintf(stderr,"Impossible d'ouvrir '%s' en écriture !\n",copie);
exit(EXIT_FAILURE);
}
int taille;
unsigned char bloc[MAX_BLOC];
while((taille=read(dorig,bloc,MAX_BLOC))>0)
if(write(dcopie,bloc,taille)!=taille){
fprintf(stderr,"Echec d'écriture sur '%s' !\n",copie);
exit(EXIT_FAILURE);
}
close(dorig);
close(dcopie);
return 0;
}