pipe

pipe - Linux et OS Alternatifs

Marsh Posté le 17-06-2002 à 08:24:42    

Est-il possible de spécifier la taille maximale d'un pipe ouvert en écriture? (mkfifo)

Reply

Marsh Posté le 17-06-2002 à 08:24:42   

Reply

Marsh Posté le 17-06-2002 à 12:21:19    

pose la question sur programmation, tu auras surement plus de succes

Reply

Marsh Posté le 17-06-2002 à 14:46:55    

Tu as un bon cours en Postscipt ici :
 
http://www.blois.univ-tours.fr/~taghelit/
 
(communication par tubes)

Reply

Marsh Posté le 17-06-2002 à 14:51:56    

merci bien :jap:
 
mais les fichier postscripts (.prn) j'en fais quoi? :??:

Reply

Marsh Posté le 17-06-2002 à 14:53:37    

gv

Reply

Marsh Posté le 17-06-2002 à 14:54:09    

télécharge ghostview et ça devrait rouler

Reply

Marsh Posté le 17-06-2002 à 15:21:38    

Ces transparents explique le principe des pipe.
Ca parle bien d'une capacité finie a un endroit mais ca dit pas comment la définir.  
 
-> mon problème reste entier (sauf q maintenant je sais q c possible)

Reply

Marsh Posté le 17-06-2002 à 15:56:01    

Il semble évident qu'elles ont une taille finie, limitée par l'implémentation. À mon avis, pour changer ça, 'va falloir aller tripatouiller dans le noyau.
Ce que je ne comprends pas, c'est pourquoi utiliser un tube si tu connais la taille à partir de laquelle tu veux arrêter d'écrire. Monter un fichier en loopback ne serait-il pas plus judicieux ?

Reply

Marsh Posté le 17-06-2002 à 21:10:29    

ok pour la taille. je peux les prendre comme ca. je voulais juste savoir la taille limite.
 
ce q je veux c une zone mémoire tampon pour 2 process. ac lecture destructrice, d'où l'utilisation de pipe.
Car j'ai des quotas a respecter sur le disq et les infos qui transistent peuvent etre plus importantes...
 
qS q tu appelles "monter un fichier en loopback"?

Reply

Marsh Posté le 18-06-2002 à 06:55:34    

Un truc dans ce genre-là, je ne suis pas sur que ça fasse l'affaire.
 
1) tu crées un fichier de la taille que tu veux, avec dd. loop.fich est lenom du fichier en sortie, et N est sa taille en kilo-octet (man dd pour plus d'info) :
~# dd if=/dev/zero of=/tmp/loop.fich bs=1024 count=N
 
2) tu formattes le fichier (en ext2 par exemple). Il va râler, mais on s'en fout. man mke2fs pour les options :
~# mke2fs -vm0 /tmp/loop.fich
 
3) tu le montes dans le système de fichiers :
~# mount -t ext2 /tmp/loop.fich /mnt/loop
 
Voilà, c'est fini, tu as un nouveau système de fichier, que tu peux voir en tapant df :

Code :
  1. Filesystem           1k-blocks      Used Available Use% Mounted on
  2. /tmp/loop.fich       15863        14     15030   1% /mnt/loop


 
À partir de là, tu peux écrire dessus en allant dans le répertoire /mnt/loop/.
 
Euh, mais d'ailleurs, si tu as des quotas à respecter et que la fifo déborde, ça va merder, non ? Parce que sinon, en créant un fichier respectant tes quotas comme je l'explique juste au-dessus, et en créant la fifo dedans, tu es peinard.

Reply

Marsh Posté le 18-06-2002 à 06:55:34   

Reply

Marsh Posté le 18-06-2002 à 09:18:51    

ça à l'air efficace mais par contre ça doit pas être très propre du point de vue programmation Unix :  
 
le gars s'il veut bidouiller des tubes, ça m'étonnerais qu'il soit content de devoir faire des appels système dans son prog !

Reply

Marsh Posté le 18-06-2002 à 09:25:59    

surtout q j'ai pas de droit su et il me semble q'ils sont nécessaires pour le mke2fs...  
 
(note: j'appelle tt ca depuis PHP)

Reply

Marsh Posté le 18-06-2002 à 09:37:30    

j'avais posté une autre réponse vers les 7h, mais je sais pas où elle est passée  :heink:  
 
si c pas faisable de créer un pipe depuis PHP, tant pis, je trouverai autre chose. mais c ce qui m'aurait semblé le plus pratique.
 
question: les pipes sont stocké en RAM ou sur disque?
il me semblait q c t en RAM, je me plante total?

Reply

Marsh Posté le 18-06-2002 à 09:52:05    

Ho a écrit a écrit :

ça à l'air efficace mais par contre ça doit pas être très propre du point de vue programmation Unix :  
 
le gars s'il veut bidouiller des tubes, ça m'étonnerais qu'il soit content de devoir faire des appels système dans son prog !  



Non, non, c'est complètement pourri, comme truc. C'est juste un délire comme ça :)
D'autant que le problème, c'est qu'il faut être root pour monter le fichier, ou alors il faut faire un truc très très très très sale (encore plus que ça, c'est pour dire :) ).

Reply

Marsh Posté le 18-06-2002 à 09:54:34    

Jak a écrit a écrit :

D'autant que le problème, c'est qu'il faut être root pour monter le fichier, ou alors il faut faire un truc très très très très sale (encore plus que ça, c'est pour dire :) ).


Bah non, il suffit d'utiliser le Hurd.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 18-06-2002 à 10:00:54    

attends que je comprenne bien, tu veux lui faire utiliser le hurd juste pour résoudre son problème de taille de pipe ???  [:stligar]

Reply

Marsh Posté le 18-06-2002 à 10:02:47    

Jar Jar a écrit a écrit :

Bah non, il suffit d'utiliser le Hurd.  



<troll>C'est ce que j'ai écrit : je parlais d'un truc très très sale.</troll>


Message édité par Jak le 18-06-2002 à 10:03:20
Reply

Marsh Posté le 18-06-2002 à 10:04:05    

c impression ou ca commence a dériver grave?
 
pour Hurd, ca me plairait vachement de l'utiliser :pt1cable:, mais c pas mon  serveur a moi :sweat:, alors, pas moyen. :non:

Reply

Marsh Posté le 18-06-2002 à 10:04:32    

Ho a écrit a écrit :

attends que je comprenne bien, tu veux lui faire utiliser le hurd juste pour résoudre son problème de taille de pipe ???  [:stligar]


C'est la seule solution élégante à son problème.
En créant un translator qui implémente une FIFO de longueur paramétrable, on peut faire exactement ce qu'il veut.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 18-06-2002 à 10:06:50    

xmulder a écrit a écrit :

c impression ou ca commence a dériver grave?
 
pour Hurd, ca me plairait vachement de l'utiliser :pt1cable:, mais c pas mon  serveur a moi :sweat:, alors, pas moyen. :non:  



Euh, je déconne, hein. Donc, ça ne dérive pas du tout.
L'idée qu'il y a derrière les translators est quand même géniale. Par contre, le Hurd n'est pas encore prêt pour la production.

Reply

Marsh Posté le 18-06-2002 à 10:11:29    

Jak a écrit a écrit :

Euh, je déconne, hein. Donc, ça ne dérive pas du tout.
L'idée qu'il y a derrière les translators est quand même géniale. Par contre, le Hurd n'est pas encore prêt pour la production.  




 
oui, Hurd m'a l'air pas trop mal et j'y passerais bien. au moins pour voir ce q c. mais ca sera pas encore pour tt de suite.
 
et meme si c la solution la plus élégante a mon probleme, je peux pas.
 
 
 
revenons a mon sujet: les pipes sont en RAM ou sur disq?
a la rigueur je m'en fous de pas pouvoir spécifier la taille si qd le tube est rempli, ca bloque sans erreur (en attendant q de la place se libère).

Reply

Marsh Posté le 18-06-2002 à 10:13:09    

un blocage sans erreur c'est tout à fait possible selon mes souvenirs, faut juste mettre le bon flag (et donc avoir la bonne doc bien détaillée ... of course)


Message édité par ho le 18-06-2002 à 10:13:34
Reply

Marsh Posté le 18-06-2002 à 10:13:38    

J'en sais rien. C'est pas dans le man ? Enfin, maintenant que j'y songe, ça doit probablement être sur le disque, puisque tu crées la fifo sur un système de fichiers. À première vue, ça semble logique, non ?

Reply

Marsh Posté le 18-06-2002 à 10:25:13    

tiens, tu dois avoir la solution ici : tu as un exemple avec un tube aillant une taille max.
 
http://www.greyc.ismra.fr/~bmorett [...] node6.html

Reply

Marsh Posté le 18-06-2002 à 10:30:32    

ok merci bien :jap:
 
je v regarder tt ca mais pour l'instant : lunch time  :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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