Bonjour,

Lors de mon TP, il faut que je simule l'exécution de la commande cat, j'ai créer un fichier que j'ai nommé File_cat et je doit afficher le contenue des fichiers entrés en ligne de commande, mais jusqu'a maintenant je me bloque sur l'affichage des fichiers entrés en ligne de commande en parcourant le tableau argv[i], exemple: cat file file2 file3... filen, mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
 
#include <fcntl.h> /* pour utliser des constantes comme O_RDWR*/ 
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
 
 
 
int main(int argc, char *argv[]){
  int fd,i;
  FILE *fichier = NULL;
  char caractere;
 
  /* Ouverture/Création du fihier File_cat en  Lécture/Ecriture*/
 
 
  if ((fd=open("File_cat", O_RDWR|O_CREAT|O_TRUNC,0644))==-1) {
    perror("Ouverture impossible de File_cat");
    exit(1); /* pour tuer le processus appelant en cas d'une fin  anormale, et dans le  cas d'une fin normale alors exit(0)*/ 
  }
 
 
  /* Fermeture de la sortie standard */
  close(1);
 
  /* Redirection de File_cat sur la sortie standard */
 
  if (dup(fd) <0) {
    perror("Duplication  impossile");
    exit(1);
  } 
 
/*Affichage des fichies en entrées de la ligne de  commande*/
 
for(i=argc;i>=1;i--)
     {
 
 
        fichier = fopen (argv[i], "r"); /* On ouvre le fichier dont le chemin est accessible via argv[1] */
 
    if (fichier != NULL)
    {
        do
        {
            caractere = fgetc (fichier);
            printf("%c", caractere);
        } while (caractere != EOF);
    }
    else exit(EXIT_FAILURE);
    getchar();
 
    return EXIT_SUCCESS;
}
 
 /* Fermeture du descripteur fd */  
 
  close(fd); 
 
  /* Recouvrement du process courant par le code de cat */
 
  execlp("cat", "cat", NULL);
 
  perror("Lancement de cat");
 
close(0);
  return(0);
 
}
SVP à votre avis, c'est quoi le problème.

Je vous remercie d'avance.