by Jan Malakhovski
README, в главном бранче репозитория быть не должно.Смотрите предыдущий год.
Требуется реализовать утилиту, читающую свой стандартный ввод построчно и выводящую каждую строку длины меньше некоторой константы k в стандартный вывод дважды подряд.
Совсем формально.
где k — константа, задаваемая снаружи, а на вход этому терму подаётся входной поток (stdin).
Менее формально с техническими подробностями.
k ≡ argv[1]) выводить в выходной поток дважды.libc, а из последней нельзя использовать никаких функций кроме malloc, memcpy, memmove, atoi и врапперов системных вызовов read и write.read должно производиться, когда это технически возможно, по (k + c - len) байт, где c — константа из множества {-1, 0, 1}, len — длина занятого куска буфера. Когда это технически невозможно, то (k + c - len) байт может быть считано в два захода.Формальные требования к неформальному описанию.
В точности задание выше, решенное при помощи синхронного read(2). Заметье, что оно чуть-чуть отличается от того, что я говорил на паре: k не define, а аргумент.
/dupme/main.c — реализация./dupme/Makefile — скрипт сборки./dupme/mainдолжно сгенерировать
123
123
пауза в 5 секунд
321
321
123
123
Требуется реализовать несколько простых утилит на bash. Все они должны учитывать, что в именах файлов могут встречаться пробелы.
Утилита интерактивного переименовывания файлов. Тот факт, что в именах файлов могут встречаться переводы строк, в этой утилите можно не учитывать. Запускаете её, например:
а она по очереди выводит на консоль имена файлов подходящих под *.txt и даёт их интерактивно поредактировать. После редактирования соответствующий файл в соответствущей ему директории переименовывается в новое имя.
/simple-bash/renamer — утилита./BUILTIN<Return>, потом держать до упора n, /^\s*read, потом несколько раз n.Утилита слежения за чем-то. Следует учитывать¸ что в аргументах могут встречаться пробелы и переводы строк. Запускаете её, например:
а она должна каждую секунду (1) печатать на консоль вывод команды, записанной в остальных аргументах (ps u) и выводить unified diff между текущим и предыдущим наблюдаемым состоянием (или ничего, если оно не поменялось).
/simple-bash/watchthis — утилита."$@" и man diff.Утилита, которая обходит дерево файловой системы начиная с указанных точек и выводит все битые симлинки. Следует учитывать¸ что в аргументах и именах файлов могут встречаться пробелы и переводы строк. Запускаете её, например:
а она делает то, что написано в предыдущем предложении, рекурсивно обходя дерево виртуальной файловой системы. Рекурсивный обход должен быть написан на bash, без использования утилит типа find или ls.
/simple-bash/brokensymlinks — утилита./nullglob.Странслируйте watchthis или (или, не xor) brokensymlinks руками в программу на C.
/simple-bash/${util}.c — транслированная утилита.Смотрите предыдущий год начиная с Midterm #1.