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

Tableau 1. 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:

Tableau 2. Codes d'erreur
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.