[UNIX] contourner la taille maximum d'un pipe

contourner la taille maximum d'un pipe [UNIX] - C - Programmation

Marsh Posté le 17-04-2010 à 18:05:48    

Bonjour,  
Dans le cadre d'un projet scolaire, je développe un shell UNIX, et je suis confronté à un léger soucis : la taille des pipe est apparement limitée par une macro (nommée PIPE_SIZE) à la compilation du kernel. En me renseignant, je suis tombé sur la commande mkfifo.
Voulant m'inspirer de l'existant, j'ai commencé à regarder le code de zsh, et il semblerait qu'il n'utilise pas mkfifo et se serve uniquement de pipe. Comment arriver à ce résultat avec mon propre shell ?  
Cordialement,
Malka.

Reply

Marsh Posté le 17-04-2010 à 18:05:48   

Reply

Marsh Posté le 17-04-2010 à 18:19:46    

Salut
Un pipe fichier (mkfifo) n'est nécessaire que si les processus qui veulent communiquer sont indépendants l'un de l'autre.
Si les processus sont liés père/fils, ils peuvent alors utiliser un pipe mémoire (pipe) beaucoup plus performant puisqu'il n'y a aucun accès disque.
 
Maintenant oui, les pipes sont limités en taille. Et alors ? Où est-ce que cela gène ? Le processus écrivain, au lieu d'écrire un gros truc, passera par une boucle d'écriture pour écrire plein de petits trucs. Et le processus lecteur utilisera une boucle de lecture et pis voilà. Quand le pipe sera plein, le processus écrivain sera alors automatiquement placé en attente jusqu'à ce que le processus lecteur ait consommé les datas et ainsi vidé le pipe.


Message édité par Sve@r le 17-04-2010 à 18:20:22

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed