134 lines
5.4 KiB
Org Mode
134 lines
5.4 KiB
Org Mode
# **************************************************************************** #
|
|
# #
|
|
# ::: :::::::: #
|
|
# README.org :+: :+: :+: #
|
|
# +:+ +:+ +:+ #
|
|
# By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ #
|
|
# +#+#+#+#+#+ +#+ #
|
|
# Created: 2018/10/26 13:33:24 by tmaze #+# #+# #
|
|
# Updated: 2018/10/28 17:53:30 by tmaze ### ########.fr #
|
|
# #
|
|
# **************************************************************************** #
|
|
|
|
#+AUTHOR: tmaze
|
|
#+TITLE: 42Minishell
|
|
|
|
/Minishell project from Ecole 42/
|
|
|
|
* Fonctions authorisées
|
|
** =int access(const char *path, int mode)=
|
|
=#include <unistd.h>=
|
|
|
|
permet de vérifier si le fichier désigné par =path= est accessible selon les
|
|
permissions indiquées par =mode=.
|
|
|
|
*** valeurs possibles de =mode=
|
|
| valeur | description |
|
|
|--------+-----------------------------------|
|
|
| R_OK | fichier lisible ? |
|
|
| W_OK | fichier ecrivable ? |
|
|
| X_OK | fichier exacutable/recherchable ? |
|
|
| F_OK | fichier existe ? |
|
|
|
|
*** valeurs de retour
|
|
| valeur | description |
|
|
|--------+-----------------------------|
|
|
| =0= | succès |
|
|
| =-1= | erreur (met à jour =errno=) |
|
|
|
|
** fonctions de manipulation de =file descriptors=
|
|
*** =int open (const char *path, int oflag, ...)=
|
|
=#include <unistd.h>=
|
|
|
|
ouvre le fichier spécifié par =path= en lecture et/ou écriture selon =oflag=.
|
|
le =file descriptor= ainsi créé est retourné.
|
|
**** l'argument =oflag=
|
|
l'argument =oflag= permet de paramétrer le =fd= en liant différents flags
|
|
par =or= (=|=).
|
|
|
|
| valeur | description |
|
|
|--------------+--------------------------------------------|
|
|
| =O_RDONLY= | ouvrir le =fd= en leture seule |
|
|
| =O_WRONLY= | ouvrir le =fd= en écriture seule |
|
|
| =O_RDWR= | ouvrir le =fd= en lecture et écriture |
|
|
| =O_APPEND= | commencer l'écriture en fin de fichier |
|
|
| =O_CREAT= | créer le fichier si inexistant |
|
|
| =O_EXCL= | erreur si O_CREAT |
|
|
| =O_NOFOLLOW= | ne pas suivre les liens symboliques |
|
|
| =O_SYMLINK= | authorise l'ouverture de liens symboliques |
|
|
**** valeurs de retour
|
|
En cas de succès, =open= retourne un entier positif désignant un =fd=.
|
|
Sinon, la valeur =-1= est retournée et =errno= est modifiée pour indiquer l'erreur.
|
|
|
|
*** =int close(int filedes)=
|
|
=#include <unistd.h>=
|
|
|
|
Supprime le descripteur =filedes= correctement.
|
|
Bien que si un process quitte, les =file descriptors= associés sont =free='d,
|
|
=clean= s'occupe aussi de rendre le =fd= réutilisable, le nombre maximum de
|
|
=fd= étant limité.
|
|
**** valeurs de retour
|
|
| valeur | escription |
|
|
|--------+-----------------------------|
|
|
| =0= | succès |
|
|
| =-1= | erreur (met à jour =errno=) |
|
|
|
|
*** =ssize_t read(int filedes, void *buf, size_t nbyte)=
|
|
=#include <sys/types.h>=
|
|
=#include <sys/uio.h>=
|
|
=#include <unistd.h>=
|
|
|
|
Essaie de lire =nbyte= de données de l'objet référencé par =filedes= dans le
|
|
buffer =buf=.
|
|
|
|
Pour les objets capable de recherche, la lecture démarre à la position
|
|
indiquée par le pointeur associé à =filedes=. Après le retour de =read=,
|
|
ce pointeur est incrémenté du nombre d'octets lu.
|
|
|
|
Pour les objets non-capable de recherche, la lecture se fait toujours de la même
|
|
position et le pointeur associé à =filedes= est non-défini.
|
|
|
|
**** valeurs de retour
|
|
| valeur | description |
|
|
|--------+-----------------------------|
|
|
| =>0= | succès (nb d'octets lus) |
|
|
| =0= | succès et fin de fichier |
|
|
| =-1= | erreur (met à jour =errno=) |
|
|
|
|
*** =ssize_t write(int filedes, const void *buf, size_t nbyte)=
|
|
=#include <unistd.h>=
|
|
|
|
Essaie d'écrire =nbyte= de données sur l'objet référencé par =filedes= depuis le
|
|
buffer =buf=.
|
|
|
|
Pour les objets capable de recherche, l'écriture démarre à la position
|
|
indiquée par le pointeur associé à =filedes=. Après le retour de =write=,
|
|
ce pointeur est incrémenté du nombre d'octets écrits.
|
|
|
|
Pour les objets non-capable de recherche, l'écriture se fait toujours de la même
|
|
position et le pointeur associé à =filedes= est non-défini.
|
|
|
|
Si l'utilisateur n'est pas =super-user=, alors =write= supprime le bit =set-user-id=
|
|
du fichier. Ceci prévient une faille de sécurité où un utilisateur pourrais "capturer"
|
|
un =fd= ouvert sur un ficher appartenant au =super-user= disposant du bit =set-user-id=.
|
|
|
|
**** valeurs de retour
|
|
| valeur | description |
|
|
|--------+-----------------------------|
|
|
| =>0= | succès (nb d'octets écrits) |
|
|
| =0= | succès et fin de fichier |
|
|
| =-1= | erreur (met à jour =errno=) |
|
|
|
|
* Todo list
|
|
** TODO étudier les différents man du sujet [2/10]
|
|
- [X] access
|
|
- [X] open, close, read, write
|
|
- [ ] getcwd, chdir
|
|
- [ ] stat, lstat, fstat
|
|
- [ ] fork, execve
|
|
- [ ] wait, waitpid, wait3, wait4
|
|
- [ ] signal, kill
|
|
- [ ] exit
|
|
- [ ] environ
|
|
- [ ] builtin
|