added non-exaustive description of file descriptor manipulating functions
42Minishell
- Fonctions authorisées
- Todo list
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]
- access
- open, close, read, write
- getcwd, chdir
- stat, lstat, fstat
- fork, execve
- wait, waitpid, wait3, wait4
- signal, kill
- exit
- environ
- builtin