Bonjour,

dans le cadre d'un exercice, je doit réaliser un programme my_ls qui imite la fonction ls. Il est dit dans le sujet que si aucun argument n'est fourni au programme, il utilisera le répertoire courant, c'est-à-dire que:
est équivalent à Jusque là, pas de prob, voici à quoi ressemble le début du main:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
if (argc==1) {
  execl(argv[0],argv[0],".",NULL);
  perror("execl");
  return EXIT_FAILURE;
}
Le problème, c'est que je dois maintenant rajouter des options (par exemple -a ou -l), et que dans ce cas,
doit être équivalent à
J'ai donc modifié le main:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
recupOptions(argc,argv);
if (argv[optind]==NULL)  // optind est modifié par la fonction getopt()
  // on doit relancer le programme avec les mêmes options, mais en rajoutant "./"
Et je ne sais pas du tout comment rajouter à la fin de argv un nouvel argument !
Je n'ai pas trouvé de fonction exec* qui semble correspondre à ce que je veux. J'ai pensé à remplacer le NULL de argv par ".", mais c'est le meilleur moyen d'avoir un segfault. J'ai pensé créer dynamiquement un tableau identique à argv mais avec en plus la chaine ".", mais cette solution ne me parait pas très jolie...

Merci d'avance pour votre aide