Skip to content

Latest commit

 

History

History
36 lines (23 loc) · 3.17 KB

lab-4.md

File metadata and controls

36 lines (23 loc) · 3.17 KB

Лабораторная работа 4. Файловая система, сигналы, потоки.

Знакомство с возможностями операционной системы по работе с файловой системой, многопоточные приложения, взаимодействию между потоками.

Условие

Рекомендуемыми языками для разработки являются C/C++ и Rust.

Требования к сборке проекта остаются такими же, как в предыдущей лабораторной работе.

Общая часть задания для всех вариантов: консольное приложение должно использовать возможности операционной системы по обеспечению многопоточности и корректно закрывать потоки, освобождать ресурсы, как минимум, при получении сигнала SIGINT.

Варианты заданий

  1. В рабочем каталоге лежат входные текстовые файлы. Каждый файл состоит из двух строк. В первой строке - число, обозначающее действие, а во второй - числа с плавающей точкой, разделенные пробелом.

    Действия могут быть следующими:

    • 1 - сложение
    • 2 - умножение
    • 3 - сумма квадратов

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

  2. После запуска программы один поток начинает писать в файл, заданный через аргумент командной строки, некоторый текст в вечном цикле. По нажатию клавиши + создаётся ещё один поток, по нажатию клавиши - удаляется последний добавленный. Каждый поток посимвольно пишет в файл свою уникальную строку. При этом операция вывода строки должна быть атомарной, т.е. процесс вывода должен быть синхронизирован таким образом, чтобы строки не перемешивались.

Ресурсы

  • Michail Kerisk. The Linux programming interface. Обзор на хабре.
  • Стивен Раго, У. Ричард Стивенс. UNIX. Профессиональное программирование, 3-е издание.