Comment créer un tube nommé sous Linux avec le shell bash ?

Comment créer un tube nommé sous Linux avec le shell bash ? - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 31-03-2003 à 20:07:48    

Bonjour,
 
je suis encore un newbie sous Linux et j'essaie de lire pas mal de docs générales. Actuellement, je suis sur le shell bash et ses possibilités.
 
Je n'arrive pas à créer de tubes nommés. L'exemple que je lis dans la doc disponible ne fonctionne pas.
http://casteyde.christian.free.fr/ [...] ml#AEN2068
 
Après quelques recherches sur ce forum et sur Internet, je n'ai pas trouvé de réponses.
 
Pouvez-vous me donner un exemple qui marche ?
 
En attendant, voici celui qui est proposé sur la doc en ligne (URL ci-dessus) :
mkfifo /tmp/tempfifo
ls > /tmp/tempfifo
less < /tmp/tempfifo
 
la première ligne pour la création du tube ne pose pas de problème.
pour la deuxième ligne, on dirait que ça bloque : le curseur se positionne sur un début de nouvelle ligne blanche et je n'ai plus la main (obligé de stopper avec Ctrl+C).
 
note : j'utilise une distrib debian (un peu ancienne: potatoe 2.2r3)

Reply

Marsh Posté le 31-03-2003 à 20:07:48   

Reply

Marsh Posté le 31-03-2003 à 20:58:17    

S-GAIA a écrit :

Bonjour,
 
je suis encore un newbie sous Linux et j'essaie de lire pas mal de docs générales. Actuellement, je suis sur le shell bash et ses possibilités.
 
Je n'arrive pas à créer de tubes nommés. L'exemple que je lis dans la doc disponible ne fonctionne pas.
http://casteyde.christian.free.fr/ [...] ml#AEN2068
 
Après quelques recherches sur ce forum et sur Internet, je n'ai pas trouvé de réponses.
 
Pouvez-vous me donner un exemple qui marche ?
 
En attendant, voici celui qui est proposé sur la doc en ligne (URL ci-dessus) :
mkfifo /tmp/tempfifo
ls > /tmp/tempfifo
less < /tmp/tempfifo
 
la première ligne pour la création du tube ne pose pas de problème.
pour la deuxième ligne, on dirait que ça bloque : le curseur se positionne sur un début de nouvelle ligne blanche et je n'ai plus la main (obligé de stopper avec Ctrl+C).
 
note : j'utilise une distrib debian (un peu ancienne: potatoe 2.2r3)


 
C'est normal, c'est parcequ'il y a un écrivain, mais pas de lecteur. Or l'écriture est en mode bloquant pour un tube nommé (il me semble que les 2 cas sont possibles dans le cas d'un tube non nommé).
Fais ton ls > /tmp/tempfifo, puis un less < /tmp/tempfifo dans un autre shell, ainsi il y a un écrivain et un lecteur, donc ça débloque

Reply

Marsh Posté le 31-03-2003 à 21:19:42    

En effet, ça marche maintenant ! Merci  :)  
 
Mais alors, quel est l'intérêt d'un tube nommé ?
Je ne vois pas ce que ça apporte de plus qu'un tube...  :heink:  
 
(à part des ennuis  :heink: )

Reply

Marsh Posté le 31-03-2003 à 23:19:05    

S-GAIA a écrit :

En effet, ça marche maintenant ! Merci  :)  
 
Mais alors, quel est l'intérêt d'un tube nommé ?
Je ne vois pas ce que ça apporte de plus qu'un tube...  :heink:  
 
(à part des ennuis  :heink: )


 
Le fait qu'il marche un peu comme un fichier. Càd qu'il est représenté sur le disque par un fichier qui existe en dur, contrairement au tube non nommé. En fait, c'est surtout utiliser en programmation système pour faire communiquer deux programmes ou deux processus entre eux. Pour une appli de type client/serveur par exemple, si le serveur créé un tube pour communiquer avec des clients, comment le client peut le retrouver sans connaitre son nom ? Avec un tube nommé, c'est simple, le fichier existe sur le disque, il suffit de l'ouvrir en mode lecture seule. Mais au niveau de l'utilisation dans un shell, en effet, je vois pas trop les utilisations possibles.

Reply

Marsh Posté le 31-03-2003 à 23:48:13    

Merci beaucoup de tes réponses Threep !  :wahoo:  
 
Je n'ai plus qu'à continuer ma lecture (sur les substitutions du shell, tout de suite).
 
Et bientôt, j'espère que je pourrai répondre à des questions des forumeurs...  :jap:  
 
 :hello:

Reply

Sujets relatifs:

Leave a Replay

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