Défi
Énoncé
Le programme affiche le prompt minish> sur stdout, lit une commande via fgets, supprime le \n final, puis l'interprète. Les quatre commandes supportées sont : pwd (affiche le répertoire courant via getcwd), cd <chemin> (change de répertoire via chdir, affiche une erreur sur stderr si chdir échoue), ls (liste les entrées du répertoire courant via opendir/readdir/closedir, une par ligne, sans les entrées . et ..), et exit (quitte proprement avec le code 0). Une commande inconnue affiche "Commande inconnue : <cmd>" sur stderr. La boucle se termine aussi sur EOF (retour de fgets égal à NULL).
Contraintes
- Compilé avec
gcc -Wall -Wextra -std=c99 -o minish minish.c. - En-têtes nécessaires :
<stdio.h>,<stdlib.h>,<string.h>,<unistd.h>,<dirent.h>,<errno.h>. - Pas de
system(),popen()ni d'exécution de processus fils : tout est implémenté directement. getcwdappelé avec un tampon de 1024 octets.- L'ordre de listage de
lssuit l'ordre retourné parreaddir(non trié).
Exemple
Session interactive :
minish> pwd
/home/user
minish> cd /tmp
minish> pwd
/tmp
minish> ls
systemd-private-abc
snap-private-tmp
minish> cd /inexistant
cd: /inexistant: No such file or directory
minish> exit
Fin par EOF (Ctrl+D) :
minish>
Le programme quitte silencieusement avec le code 0.