GithubHelp home page GithubHelp logo

mbeaujar / minishell Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 3.2 MB

The objective of this project is for you to create a simple shell. Yes, your little bash or zsh. You will learn a lot about processes and file descriptors.

License: MIT License

Makefile 2.32% C 96.99% Dockerfile 0.26% Shell 0.43%

minishell's Introduction

MINISHELL

LIEN :

https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html

termcap : https://www.gnu.org/software/termutils/manual/termcap-1.3/html_chapter/termcap_4.html

special shell variables : https://tldp.org/LDP/abs/html/refcards.html#AEN22006

exit status : https://tldp.org/LDP/abs/html/exit-status.html#EXSREF

special characters : https://tldp.org/LDP/abs/html/special-chars.html

https://wiki.archlinux.org/title/Core_dump ctrl-\ crée un core dumped exit (127 + SIGABRT)

DOC :

  • fork : crée un process child qui est une copie du process parent

  • wait : suspend le processus appelant jusqu'à ce que l'un de ses childs se termine

  • waitpid : susprend le processus appelant jusqu'à ce que le child spécifié dans le pid ait changé d'état

  • wait3 : La même chose que waitpid mais retourne des informations sur l'utilisation des ressources par le child depuis la struct rusage

  • wait4 : La même chose que wait3 mais contrairement à wait3 qui prend tout les childs, wait4 peut en spécifier qu'un seul

  • signal : gestion de signaux, en fonction du gestionnaire il peut ignoré comme faire des actions en fonction des signaux

  • kill : envoi un signal à un processus, le signal dépend du pid

  • getcwd : copie le chemin d'accès absolu du répertoire de travail courant dans la chaîne pointée par buf, qui est de longueur size

  • chdir : remplace le répertoire de travail courant du processus appelant par celui indiqué dans le chemin path -- utile pour la commande "cd"

  • stat : récupère l'état du fichier pointé par path et remplit le tampon buf, remplit une structure d'informations sur un fichier -- utile pour la commande "ls"

  • lstat : est identique à stat(), sauf que si path est un lien symbolique, il donne l'état du lien lui-même plutôt que celui du fichier visé

  • fstat : est identique à stat(), sauf que le fichier ouvert est pointé par le descripteur fd

  • execve : execute le fichier en arguments -- utile pour la commande "./"

  • dup : return une copie du descripteur de fichier en arguments

  • dup2 : pareil que dup mais avec des sécurités et un new fd spécifique

  • pipe : tube avec 2 descripteurs de fichier, une extrémité du tube écrit et met dans un tampon en attendant que l'autre extrémité la lise

  • opendir : open classique mais pour un répertoire

  • readdir : consulter / lire un répertoire -- utile pour "ls" ?

  • closedir : ferme le répertoire qui a été ouvert avec opendir

  • strerror : Obtenir un message en fonction du code erreur -- utile pour la gestion d'erreur

  • errno : code de la dernière erreur

  • isatty : booléen, renvoi 1 si desc est un descripteur de fichier ouvert connecté à un terminal, sinon 0

  • ttyname : si le fd est connecté à un terminal il retourne le chemin (absolu ?) dans un char*

  • ttyslot : renvoie la position de l'entrée du terminal en cours dans un fichier

  • ioctl : Contrôler les périphériques (pas bien compris) -- utile pour avoir la taille du terminal

  • getenv : prend une variable d'env et retourne la value de la variable dans un char *

termcap library
  • tcgetattr : remplit une structure "termios" d'informations sur un terminal depuis un fd

  • tcsetattr : comme tcgetattr mais il accepte des options en paramètres en +

  • tgetent :

  • tgetflag :

  • tgetnum :

  • tgetstr :

  • tgoto : déplacer le curseur a des coordonnées

  • tputs :

ERROR :

error prompt :

minishell &> echo ola ; echo somd ;; bash: syntax error near unexpected token ;;' minishell &> echo ola ; echo somd ; ola somd minishell &> echo ola ; echo somd; ola somd minishell &> echo ola ; echo somd;; ola somd minishell &> echo ola;echo somd; ola cho somd minishell &> echo ola gateAU ola gateAU minishell &> echo ola gateAU; ola gateAU minishell &> echo ola gateAU;; bash: syntax error near unexpected token ;;' minishell &> echo ola ; gateAU;; bash: syntax error near unexpected token ;;' minishell &> echo ola ; echo gateAU;; bash: syntax error near unexpected token ;;' minishell &> echo ola;echo gateAU;; bash: syntax error near unexpected token ;;' minishell &> echo ola;echo ga bash: syntax error near unexpected token ;;'

minishell's People

Contributors

mbeaujar avatar atinseau avatar

Watchers

 avatar

minishell's Issues

test

cd, $?, command non builtint

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.