No Description

kot-senya 00de00c13c Загрузить файлы 'Файлы/Бинарный' 8 months ago
База 03ab790194 Загрузить файлы 'База/Условия' 8 months ago
Библиотеки 6ce132dbbc Загрузить файлы 'Библиотеки/Динамические' 9 months ago
Каналы f2c21c3987 Загрузить файлы 'Каналы/Именованые' 9 months ago
Потоки 4171ffd2de Загрузить файлы 'Потоки/Критические секции' 9 months ago
Процессы aee01abc15 Загрузить файлы 'Процессы/Фоновые процессы' 9 months ago
Указатели aebed08de0 Загрузить файлы 'Указатели/Линейный односвязный список' 8 months ago
Файлы 00de00c13c Загрузить файлы 'Файлы/Бинарный' 8 months ago
README.md ad9b11c23e Обновить 'README.md' 8 months ago

README.md

Задачи к экзамену по мдк 01.04 - Системное программирование

Базовые вещи

Создание консольной утилиты, которая печатает список переданных ей аргументов из командной строки. При демонстрации работы программы рассмотреть не менее трех способов передачи аргументов в запускаемый процесс.

  • gcc -o arg consoleargs.c - компиляция программы

    1 Способ

    • ./arg "1 аргумент" "2 аргумент" - запуск программы

    2 Способ (здесь нельзя передать несколько сложных аргументов)

    • export ARGS="1 аргумент" - компиляция аргументов командной строки
    • ./arg $ARGS - запуск программы

    3 Способ напишите еще одну программу которая запускает вашу с нужными аргументами =>

    • gcc -o run args3.c - компиляция проги
    • ./run - запуск программы

Программа для преобразования числа в строку и склейки двух строк. Разработать без использования системных функций.

  • gcc strings.c -o strgo - компиляция проги
  • ./strgo - запуск программы

Программа для считывания нескольких числовых значений из строки и их записи в числовой массив (разделитель - пробел). Количество значений в строке заранее неизвестно.

  • gcc numbers.c -o num - компиляция проги
  • ./num - запуск программы

Использование условных блоков для анализа значений, возвращаемых системной функцией (не менее трех функций).

  • gcc systemfun.c -o fun - компиляция проги
  • ./fun - запуск программы

Указатели

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

  • gcc function.c -o fun - компиляция проги
  • ./fun - запуск программы

Создание линейного односвязного списка из n элементов. Значение элемента генерируется случайным образом. Поместить в отдельные указатели адрес минимального и максимального элемента списка. Вывести список и значения минимального и максимального элемента через указатель.

  • gcc collection.c -o col - компиляция проги
  • ./col - запуск программы

Файлы

Программа для считывания и записи строкового значения из текстового файла с последующей записью его в другой текстовый файл. Для работы с файлами используются функции Linux.

  • gcc filestr.c -o filestr - компиляция проги
  • ./filestr - запуск программы

Программа для считывания числового значения из файла (с сохранением его в числовом формате). Исходный файл является бинарным.

  • gcc filebin.c -o filebin - компиляция проги
  • ./filebin - запуск программы

Потоки

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

  • gcc -pthread -o factorial factorial.c - компиляция программы
  • ./factorial - запуск программы

Разработка программы-секундомера. в одном потоке идет отсчет времени, а в другом осуществляется управление секундомером.

  • gcc -pthread -o watch stopwatch.c - компиляция программы
  • ./watch - запуск программы

Создание программы с критической секцией в ОС Linux. Программа должна содержать минимум два потока. Использование критической секции в функции потока должно быть обосновано.

  • gcc -pthread -o run criticaly.c - компиляция программы
  • ./run - запуск программы

Процессы

Программа с запуском стороннего процесса. Исполняемый файл стороннего процесса подготавливается заранее.

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

  • gcc otherapp.c -o run - компиляция программы
  • ./run - запуск программы

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

Для работы используется notify-send, вероятность того что его не будет маленькая, но если что вот код установки sudo apt install notify-send

  • gcc -o mess countermess.c - компиляция программы
  • ./mess - - запуск программы

Библиотеки

Создание статической библиотеки в Linux. Для демонстрации работы написать две элементарные функции в библиотеке и скомпилировать библиотеку вместе с основной программой.

  • gcc -c staticlib.c -o static.o - компиляция программного модуля
  • ar rc libMY_STATIC.a static.o - помещаем объектный модуль в архив
  • ranlib libMY_STATIC.a - [необязательно] индексация содержимого архива (говорят,работает быстрее)
  • gcc callstaticlib.c libMY_STATIC.a -o run - компиляция программы
  • ./run - запуск программы

Создание динамической библиотеки в Linux. Для демонстрации работы написать две элементарные функции в библиотеке и вызвать их из основной программы.

  • gcc -fPIC dynamiclib.c -shared -o libdynamic.so - компиляция разделяемой библиотеки
  • gcc -o run calldynamiclib.c -ldl - компиляция программы
  • ./run - запуск программы

Каналы

Использование анонимного канала для передачи строковых значений между процессами

  • gcc -o run anonim.c - компиляция программы
  • ./run - запуск программы

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

необходимо реализовать 2 программы, для поддержания связи:

Сервер:

  • gcc -o server named-server.c - компиляция программы сервера
  • ./server - запуск сервера

Клиент:

  • gcc -o client named-client.c - компиляция программы клиента
  • ./client - запуск клиента