Задание на лабораторную работу 4

Используя системные вызовы, напишите программу на языке С, аналогичную работе утилит, указанных в варианте:

  1. zsh
  2. cat
  3. cp
  4. head
  5. tail
  6. tee
  7. wc
  8. cmp
  9. more (man ioctl(2), termio(7I)/TIOCGWINSZ)
  10. less (man ioctl(2), termio(7I)/TIOCGWINSZ, curses(3CURSES))
  11. sed
  12. awk
  13. sh
  14. ksh
  15. csh

Требования

Программа должна осуществлять весь ввод-вывод через семейства read(2) и write(2).

Продумать обработку ошибок, используя заголовочный файл errno.h.

Обрабатываемые файлы должны передаваться в вашу программу через аргументы командной строки.

В случае возникновения ошибок при использовании системных вызовов, их необходимо обработать и вывести причину возникновения ошибки.

Все файлы (исходный код, Makefile, исполнямые и объектные файлы, ...) должны быть в одном каталоге, для компиляции файлов должен быть написан Makefile, позволяющий перекомпилировать только изменённые файлы.

Для получения возможности защиты на 4 балла:
+ программа должна уметь работать с несколькими файлами, а также стандартным входным потоком при указании в качестве имени файла "-".

Для получения возможности защиты на 5 баллов:
+ программа должна обрабатывать несколько ключей оригинальной команды.