pipe - Linux et OS Alternatifs
Marsh Posté le 17-06-2002 à 12:21:19
pose la question sur programmation, tu auras surement plus de succes
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)
Marsh Posté le 17-06-2002 à 14:51:56
merci bien
mais les fichier postscripts (.prn) j'en fais quoi?
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)
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 ?
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"?
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 :
|
À 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.
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 !
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)
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
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?
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 ).
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.
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 ???
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>
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 , mais c pas mon serveur a moi , alors, pas moyen.
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.
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 , mais c pas mon serveur a moi , alors, pas moyen. |
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.
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).
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)
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 ?
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
Marsh Posté le 18-06-2002 à 10:30:32
ok merci bien
je v regarder tt ca mais pour l'instant : lunch time
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)