Le but du projet est de programmer un interpréteur de commandes (shell) interactif qui reprend quelques fonctionnalités classiques des shells usuels, incluant le job control pour la gestion des tâches lancées depuis le shell.
- Gestion de tâches multiples : Permet le contrôle de l'exécution simultanée de plusieurs tâches et leur bascule entre l'avant- et l'arrière-plan.
- Identification et surveillance : Chaque groupe de processus crée constitue un job avec un numéro unique pour une gestion et surveillance efficaces.
- Contrôle des jobs : Les jobs peuvent être lancés en arrière-plan ou en avant-plan et sont gérés avec des commandes spécifiques pour lister, reprendre, ou arrêter ces jobs.
- Exécution des commandes système : jsh peut exécuter toutes les commandes externes disponibles dans le
PATHde l'environnement.
pwd: Affiche le répertoire de travail courant.cd [ref | -]: Change le répertoire de travail.?: Affiche la valeur de retour de la dernière commande exécutée.exit [val]: Termine le processus jsh.jobs [-t] [%job]: Liste les jobs avec des détails selon les options.bg %job: Relance un job en arrière-plan.fg %job: Relance un job en avant-plan.kill [-sig] %job | pid: Envoie un signal à un job ou processus.
- Mode interactif : jsh fonctionne en mode interactif, analysant et exécutant les commandes entrées par l'utilisateur.
- Personnalisation : Le prompt est configurable et peut refléter l'état des jobs et le répertoire courant.
- Redirection des flots : jsh gère les redirections standards (
<,>,2>,>>, etc.) ainsi que les combinaisons par tube (|).
- Traitement des signaux : jsh gère spécifiquement les signaux pour ne pas être interrompu inopinément.
- make
- ./jsh