Linux (Ubuntu). Уровень 2. Программирование в Linux на C
На нашем курсе «Linux (Ubuntu). Уровень 2. Программирование в Linux на C» Вы получите знания и навыки, необходимые для разработки программного обеспечения для стремительно набирающей популярность операционной системы Linux. Вы станете понимать процесс сборки ПО и специфики компилятора C из состава GCC. Вы научитесь разбираться в различиях между процессами и потоками, использовать многопоточность и ее специфики. Вы узнаете, что такое «демоны» и в чем их отличие от прикладного программного обеспечения.
Вы научитесь:
- Понимать процесс сборки ПО и специфики компилятора C из состава GCC
- Разрабатывать и использовать разделяемые библиотеки
- Использовать функции файлового ввода-вывода
- Использовать механизмы обеспечения многозадачности и межпроцессного взаимодействия
- Использовать файловые и сетевые сокеты
- Использовать механизм сигналов
- Разбираться в различиях между процессами и потоками, использовать многопоточность и ее специфики
- Создавать демонов, понимать различия между демонами и прикладным ПО
- Понимать специфику консольного ввода-вывода и уметь ее использовать
- Понимать специфику отображаемых в память файлов и уметь их использовать
Требуемая подготовка: Успешное окончание курса
Успешное окончание курса
Нажмите, чтобы раскрыть...
Модуль 1. Введение
- Ознакомление со спецификой сборки ПО в GNU/Linux (Ubuntu)
- Ознакомление с консольными текстовыми редакторами (vi,nano,mcedit)
- Ручная и автоматическая сборка ПО (Makefile)
- Модель Клиент-Интерфейс-Сервер (КИС)
- Статическая сборка библиотек
- Совместно используемые библиотеки
- Работа с переменными окружения
- Обзор механизмов ввода-вывода в Linux (Ubuntu)
- Файловые дескрипторы
- Системные вызовы: open, close, write, read и lseek
- Типы файлов
- Индексные дескрипторы и жесткие ссылки
- Права доступа к файлу
- Файловая система proc
- Два способа прочесть содержимое директории
- Разреженные файлы и специфика их применения
- Блокировка областей файла
- Механизмы межпроцессного взаимодействия Linux (Ubuntu)
- Неименованные каналы (pipes)
- Именованные каналы (named pipes)
- Сообщения (message queue)
- Разделяемая память (shared memory)
- Семафоры (semaphores)
- Сокеты в файловом пространстве имен (UNIX-сокеты)
- Парные сокеты (pair sockets)
- Сетевые сокеты (sockets)
- Знакомство с сигналами (signals)
- Отличие сигналов от других механизмов межпроцессного взаимодействия
- Специфика обработки сигналов (signal handling)
- Клонирование процессов — fork()
- Замена исполняемого процесса — exec()
- Зомби (zombies) — причины возникновения и способы их устранения
- Потоки и процессы
- Специфика построения многопоточных приложений (multithreading)
- Досрочное завершение потока
- Создание обработчика завершения потока
- Средства синхронизации потоков (synchronize primitives)
- Атрибуты потоков
- Отличие демона от консольной утилиты
- Специфика разработки демонов (daemons)
- Создание демона использующего сетевые сокеты
- Специфика разработки консольных приложений
- Предотвращение перенаправления вывода
- Управление терминалом
- Сокрытие пароля пользователя при аутентификации
- Отображение обычного файла
- Совместный доступ к файлу
- Частные отображения
- Другие применения mmap
- Специфика разработки 64-битных приложений
- Использование библиотеки ncurses
- Программирование графического интерфейса с помощью GTK+
https://www.specialist.ru/course/unsi
https://tg030.skladchik.org/threads/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0-%D1%8F%D0%B7%D1%8B%D0%BA%D0%B5-%D0%A1%D0%B8-%D0%A1%D0%BF%D0%B5%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D1%81%D1%82-2020.201884/