Разработать программу для пакетной обработки команд. Команды считываются построчно из стандартного ввода и обрабатываются блоками по N команд. Одна команда - одна строка, конкретное значение роли не играет. Если данные закончились - блок завершается принудительно. Параметр N передается как единственный параметр командной строки в виде целого числа. Логика работы для статических блоков (в примере N == 3): ./bulk 3
Ввод | Вывод | Комментарий |
---|---|---|
cmd1 | ||
cmd2 | ||
cmd3 | ||
bulk: cmd1, cmd2, cmd3 | Блок завершён – выводим блок. | |
cmd4 | ||
cmd5 | ||
EOF | ||
bulk: cmd4, cmd5 | Конец ввода – принудительно | |
завершаем блок. |
Размер блока можно изменить динамически, если перед началом блока и сразу после дать
команды {
и }
соответственно. Предыдущий пакет при этом принудительно завершается. Такие
блоки могут быть включены друг в друга при этом вложенные команды {
и }
игнорируются (но не
сами блоки). Если данные закончились внутри динамического блока, весь динамический блок
игнорируется.
Логика работы для динамического размера блоков (в примере N == 3): ./bulk 3
Ввод | Вывод | Комментарий |
---|---|---|
cmd1 | ||
cmd2 | ||
{ | ||
bulk: cmd1, cmd2 | Начало динамического блока – | |
выводим предыдущий | ||
статический досрочно. | ||
cmd3 | ||
cmd4 | ||
} | ||
bulk: cmd3, cmd4 | Конец динамического блока – | |
выводим. | ||
{ | ||
cmd5 | ||
cmd6 | ||
{ | Игнорируем вложенные команды. | |
cmd7 | ||
cmd8 | ||
} | Игнорируем вложенные команды. | |
cmd9 | ||
} | ||
bulk: cmd5, cmd6, | Конец динамического блока – | |
cmd7, cmd8, cmd9 | выводим. | |
{ | ||
cmd10 | ||
cmd11 | ||
EOF | Конец ввода – динамический | |
блок игнорируется, не | ||
выводим. |
Вместе с выводом в консоль блоки должны сохранятся в отдельные файлы с именами bulk1517223860.log , где 1517223860 - это время получения первой команды из блока. По одному файлу на блок.
Бинарный файл должен называться bulk.
Задание считается выполненным успешно, если после установки пакета и запуска с тестовыми данными вывод соответствует описанию. Данные подаются на стандартный вход построчно с паузой в 1 секунду для визуального контроля. Будет отмечена низкая связанность обработки данных, накопления пачек команд, вывода в консоль и сохранения в файлы.