Écrivez un shell qui doit :
- Afficher un prompt en l’attente d’une nouvelle commande
- Chercher et lancer le bon executable (basé sur une variable d’environnement
PATHou en utilisant un path absolu), comme dansbash - Vous devez implémenter les builtins suivants :
echoet l’option-ncduniquement avec un chemin absolu ou relatifpwdsans aucune optionexportsans aucune optionunsetsans aucune optionenvsans aucune option ni argumentexitsans aucune option
;dans la ligne de commande doit séparer les commandes'et"doivent marcher comme dans bash, à l’exception du multiligne- Les redirections
<,>et>>doivent marcher comme dans bash, à l’exception des aggrégations de fd |doit marcher comme dans bash- Les variables d’environnement (
$variable) doivent marcher comme dans bash $?doit marcher comme dans bashctrl-C,ctrl-Detctrl-\doivent afficher le même résultat que dans bash
fork: créé un nouveau processus enfantwait: attend un signal d'arrêt d'un processus, wait4 pour attendre la fin d'un processus précisexit: termine le processusgetcdw: pour obtenir le pwdstat: donne toutes les infos d'un fichier comme un lslstat: same sauf que dans le cas d'un lien donne les infos sur le lien et pas le fichier pointéftat: donne toutes les infos sur un fichier comme un ls, mais cette fois on lui passe en argument le file descriptorkill: envoie un signal d'arrêt au processus indiquésignal: exécute sisigest reçuexecve: exécuter un exécutable, avec ses arguments et l'environnement en paramètresdup: duplique le descripteur d'un objet, i.e. attribue un nouveau descripteur qui pointe vers le même objet, ainsi lorsque l'on read sur l'un on avance sur les deuxdup2: permet en plus de spécifier la valeur du descripteurchdir: change le répertoire courantopendir: ouvre le fichier descriptif du dossierreaddir: lit l'entrée suivante dans le fichier descriptif du dossierclosedir: referme le ficher descriptif du dossierpipe: rempli un tableau avec deux nouveaux file descriptors qui vont être utiles pour changer l'entrée standard et la sortie standard
© Lounes Adjou, Germain Hebert, 2023
For inquiries, please email me at: email