2010-09-16 9 views
0

Je veux utiliser curl pour obtenir un flux à partir d'un serveur distant, et l'écrire dans un tampon. Jusqu'ici tout va bien, je fais juste curl http://the.stream>/path/to/thebuffer. Chose est que je ne veux pas que ce fichier soit trop grand, donc je veux être capable de supprimer les premiers octets du fichier comme je l'ajoute simultanément aux derniers octets. Y-a-t'il une façon de le faire?créer un tampon de roulement dans bash

Sinon, si je pouvais écrire n octets dans buffer1, alors passer à buffer2, buffer3 .. et quand le buffer x était atteint, supprimer buffer1 et recommencer - sans perdre les données venant de curl (c'est un flux en direct, donc je ne peut pas arrêter la boucle). J'ai lu les pages de manuel pour curl et chat et j'ai lu, mais je ne vois rien de prometteur.

Répondre

1

Il n'y a aucun moyen particulièrement facile de faire ce que vous cherchez à faire. Probablement l'approche la plus proche crée une FIFO et redirige la sortie de curl vers la FIFO. Vous avez alors un programme tel que split ou csplit en lisant le FIFO et en écrivant dans différents fichiers. Si vous décidez que les programmes fractionnés ne sont pas l'outil, vous devrez peut-être écrire votre propre variation sur eux. Vous pouvez ensuite décider comment traiter les fichiers créés et quand les supprimer.

Notez que curl va se bloquer jusqu'à ce qu'il y ait un processus de lecture de la FIFO. Lorsque le processus qui lit les sorties FIFO, curl obtiendra soit un signal SIGPIPE ou une erreur d'écriture, dont l'un devrait l'arrêter.

Questions connexes