sous-routine pipe
Objectif
Crée un canal interprocessus.
Bibliothèque
Bibliothèque C standard (libc.a)
Syntaxe
#include <unistd.h>
int pipe ( FileDescriptor)
int FileDescriptor[2];Descriptif
La sous-routine pipe crée un canal interprocessus appelé canal de communication et renvoie deux descripteurs de fichier, FileDescriptor[0] et FileDescriptor[1]. FileDescriptor[0] est ouvert en lecture et FileDescriptor[1] est ouvert en écriture.
Une opération de lecture sur le paramètre FileDescriptor[0] accède aux données écrites dans le paramètre FileDescriptor[1] sur la base du premier entré, premier sorti (FIFO).
Les demandes d'écriture de PIPE_BUF octets ou moins ne seront pas imbriquées (mélangées) avec des données provenant d'autres processus effectuant des écritures sur le même canal de communication. PIPE_BUF est une variable système décrite dans la sous-routine pathconf . Les écritures supérieures à PIPE_BUF octets peuvent avoir des données qui sont entrelacées, sur des limites arbitraires, avec d'autres écritures.
Si O_NONBLOCK ou O_NDELAY sont définis, les demandes d'écriture de PIPE_BUF octets ou moins aboutiront complètement ou échoueront et renverront -1 avec la variable globale errno définie à EAGAIN. Une demande d'écriture de plus de PIPE_BUF octets transférera ce qu'elle peut et renverra le nombre d'octets effectivement écrits, ou ne transférera aucune donnée et renverra -1 avec la variable globale errno fixée à EAGAIN.
Paramètres
| Article | Descriptif |
|---|---|
| FileDescriptor | Indique l'adresse d'un tableau de deux entiers dans lequel les nouveaux descripteurs de fichier sont placés. |
Valeurs renvoyées
Une fois l'opération terminée, la valeur 0 est renvoyée. Sinon, la valeur -1 est renvoyée et la variable globale errno est définie pour identifier l'erreur.
Codes d'erreur
La sous-routine pipe échoue si une ou plusieurs des conditions suivantes sont remplies:
| Article | Descriptif |
|---|---|
EFAULT |
Le paramètre FileDescriptor pointe vers un emplacement en dehors de l'espace adresse alloué du processus. |
EMFILE |
Le nombre de descripteurs de fichier ouverts dépasse la valeur OPEN_MAX . |
ENFILE |
La table de fichiers système est saturée ou le périphérique contenant les canaux de communication ne comporte pas d'i-nodes libres. |