Я изменил GNU tee
на cycletee
Исходный код (Вы можете загрузить двоичный файл с https://github.com/vls/cycletee/tree/master/bin)
Что это может быть объяснено на следующем примере:
seq 10 | cycletee 1.txt 2.txt 3.txt
cat 1.txt // prints 1, 4, 7, 10
cat 2.txt // prints 2, 5, 8
cat 3.txt // prints 3, 6, 9
Тогда есть all.tgz
(см. Приложение для построения сценария)
all.tgz
имеет три текстовых файла и всего 9000000 строк.
Все хорошо. Например:
seq 10000000 | ./cycletee 1.txt 2.txt 3.txt
zcat all.tgz | tee 1.txt > /dev/null
zcat all.tgz | tail // got 9000000 at the last line
, кроме вызова:
zcat all.tgz | ./cycletee 1.txt 2.txt 3.txt
, когда он читает строку № 3000000, он выходит.
strace it Я получил это сообщение и оно вышло:
_llseek(2, 0, 0xffbec3d0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
Вопрос
Каждый может указать на проблемумой исходный код?
Любая техника отладки для выяснения проблемы будет оценена. Я не знаю, как использовать gdb
в этой ситуации.
Приложение