Programmation Avancée en C


file.c

00001 #include <sys/types.h>
00002 #include <assert.h>
00003 #include <errno.h>
00004 #include <fcntl.h>
00005 #include <stdio.h>
00006 #include <string.h>
00007 #include <unistd.h>
00008 
00009 void affichefichier(int descr) {
00010         char c;
00011         while(read(descr, &c, 1) == 1) {
00012                 if (write(STDOUT_FILENO, &c, 1) == -1) {
00013                         perror("write a renvoyé: ");
00014                         return; /* on ne peut pas y faire grand chose... */
00015                 }
00016         }
00017 }
00018 
00019 int main(int argc, char *argv[])
00020 {
00021         if (argc < 2) {
00022             fprintf(stderr, "Usage: %s fichier1 [fichier2 [...]]\n", argv[0]);
00023                 return 1;
00024         }
00025         int i;
00026         for (i = 1; i < argc; i++) {
00027                 assert(argv[i] != NULL);
00028                 int fd = open(argv[i], O_RDONLY, 0);
00029                 if (fd < 0) {
00030                         fprintf(stderr, "Erreur d'ouverture du fichier %s: %s\n",
00031                                 argv[i], strerror(errno));
00032                         continue;
00033                 }
00034                 affichefichier(fd);
00035                 close(fd);
00036         }
00037         return 0;
00038 }