Forum Astuces.divers [Terminal] First In First Out

Posté par  (site web personnel) .
Étiquettes : aucune
0
11
juin
2004
Les fifo permettent toutes sortes d'applications. Voici un exemple simple, qui pourra donner des idées:

$ mkfifo test.wav
$ mpg321 test.mp3 -w test.wav
rien ne se passe. mpg321 est en pause.
$ aplay test.wav
et le cpu se met en route...
  • # si quelqu un a compris

    Posté par  . Évalué à 2.

    je n ai rien compris a l astuce, qqun peut m expliquer?
    • [^] # Re: si quelqu un a compris

      Posté par  . Évalué à 1.

      L'auteur de l'astuce voulait montrer l'utilisation des "pipes". On peut se representer un "pipe" comme une sorte de tunnel avec une entrée et une sortie.

      $ mkfifo test.wav : crée un fichier vide nommé test.wav qui va pouvoir être utilisé par les applications.

      $ mpg321 test.mp3 -w test.wav : mpg321 va transformer le fichier mp3 en fichier wav lisible par aplay. Comme le fichier test.wav a été créé comme "pipe", mpg321 attend que quelqu'un demande l'accès en lecture au fichier pour commencer la transformation du fichier test.mp3 en fichier wav.

      $ aplay test.wav : aplay va faire un accès en lecture sur le fichier "pipe" test.wav et donc mpg321 va commencer à lancer la transformation.

      Je me sers des pipe sous Unix (HP_UX) pour pallier les limitations sur la compression par Gzip des ficheirs de plus de 2 Gigos : j'exporte des dumps de bases, tout en les compressant à la volée...
      • [^] # Re: si quelqu un a compris

        Posté par  . Évalué à 1.

        Ne peux on pas simplement faire:
        mysqldump ... > gzip -9 > dump.sql.gz

        Pas besoin de créer un fichier de pipe !
        • [^] # Re: si quelqu un a compris

          Posté par  . Évalué à 1.

          Mes exports sous HP_UX sont des exports de bases de données Oracle et pas MySQL.

          Pour Mysql, ce serait plutot :

          $ mysqldump ... |gzip -9 > dump.sql.gz
        • [^] # Re: si quelqu un a compris

          Posté par  . Évalué à 1.

          Les tubes nommés (mkfifo) sont rares d'utilisation. La plupart du temps un tube "normal" suffit. Ils sont utiles (entre autre) lorsque les commandes ne savent pas lire dans les entrées stanards ou écrire dans les sorties standards. Souvent les commandes acceptent "-" pour désigner l'entrée ou la sorite standard. Par exemple:
          wget -O - http://www.exemple.com/fichier.tgz(...) | tar zxvf -
          Cet exemple télécharge un fichier compréssé et le décompresse à la volée.
  • # Stream...

    Posté par  (site web personnel) . Évalué à 2.

    Ne peut-on pas streamer de la musique ou du son entre deux machines, comme ça ?

    J'ai déjà vu passer ça je ne sais plus où, il s'agit de créer une fifo et de rediriger un flux sonore dedans, comme dans l'exemple de la présente astuce (mpg321, par ex.).
    Ensuite, on exporte par NFS, SMB, etc... , le répertoire qui contient cette fifo; enfin, on monte ce partage sur une machine distante. il ne reste plus qu'a lire la fifo sur la machine distante (Comme ici avec aplay)...

    Je devine qu'il doit y avoir d'autre applications plus sympa, des idées ?
    • [^] # Re: Stream...

      Posté par  . Évalué à -1.

      Il me semble que pour faire cela les sockets sont plus adaptées..
    • [^] # Re: Stream...

      Posté par  . Évalué à 1.

      Dans le genre un nc (netcat) peut aussi faire des merveilles.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.