(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Проекты | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Выпускники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация

Системное программирование, файловый ввод-вывод

Все программы должны соответствовать принятому стилю кодирования.

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

3. Файловый ввод-вывод

  1. Создайте программу копирования файлов. Программа должна получать два аргумента командной строки, первый аргумент - файл, откуда копировать, второй аргумент - файл, куда копировать.
  2. Создайте программу добавления строки в конец произвольного файла. Программа должна получать два аргумента командной строки, первый аргумент - файл, в который добавить строку, второй аргумент - строка для добавления.
  3. Создайте программу, позволяющую выяснить поведение функции open() при открытии с флагами O_CREAT | O_EXCL для записи файла, который существует и для которого нет прав на запись. Какую ошибку вернет функция open() - "нет прав" или "файл существует" ?
  4. Создайте программу, позволяющую выяснить: если файл открыт для чтения и записи с флагом O_APPEND, можно ли читать данные из произвольного места в файле с помощью функций lseek() и read() ? Можно ли записывать данные в произвольное место в файле с помощью функций lseek() и write() ? (упр. 3.6 в учебнике)
  5. Создайте программу, с помощью которой можно заметить особенность работы функции read() при чтении из терминала (возврат из read() происходит при нажатии enter).
  6. Создайте программу, с помощью которой можно проверить, действительно ли при создании дубликата файлового дескриптора функцией dup() дубликат и исходный файловый дескриптор разделяют общий указатель текущей позиции в файле.