создать скользящий буфер в Bash - PullRequest
0 голосов
/ 16 сентября 2010

Я хочу использовать curl, чтобы получить поток с удаленного сервера и записать его в буфер. Пока все хорошо, я просто делаю curl http://the.stream>/path/to/thebuffer. Дело в том, что я не хочу, чтобы этот файл становился слишком большим, поэтому я хочу иметь возможность удалять первые байты файла, когда одновременно добавляю последние байты. Есть ли способ сделать это?

В качестве альтернативы, если бы я мог записать n байтов в buffer1, затем переключиться на buffer2, buffer3 .. и когда буфер x был достигнут, удалите buffer1 и начните снова - без потери данных, поступающих из curl (это живой поток, поэтому я могу не скручивай) Я читал справочные страницы для curl и cat и читал, но не вижу ничего многообещающего.

1 Ответ

1 голос
/ 16 сентября 2010

Не существует какого-либо особенно простого способа сделать то, что вы хотите сделать.

Возможно, ближайший подход создает FIFO и перенаправляет вывод curl в FIFO.Затем у вас есть программа, такая как split или csplit, читающая FIFO и записывающая в разные файлы.Если вы решите, что разделенные программы не являются инструментом, вам может потребоваться написать собственный вариант для них.Затем вы можете решить, как обрабатывать созданные файлы и когда их удалять.

Обратите внимание, что curl будет зависать до тех пор, пока не произойдет чтение процесса из FIFO.Когда процесс, считывающий FIFO, завершается, curl получит либо сигнал SIGPIPE, либо ошибку записи, что должно остановить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...