Операционная система Linux давно занимает лидирующие позиции в программном обеспечении суперкомпьютеров, она занимает второе место в сегменте интернет-серверов и стремительно набирает популярность в корпоративном сегменте. Этому способствуют главные преимущества Linux по сравнению с коммерческими операционными системами — высокая экономическая эффективность, мобильность, гибкость, оптимальные условия для установки СУБД.
На нашем курсе «Linux (Ubuntu). Уровень 2. Программирование в Linux на C/C++» Вы получите знания и навыки, необходимые для разработки программного обеспечения для стремительно набирающей популярность операционной системы Linux. Вы станете понимать процесс сборки ПО и специфики компилятора C/C++ из состава GCC. Вы научитесь разбираться в различиях между процессами и потоками, использовать многопоточность и ее специфики. Вы узнаете, кто такие «демоны» и в чем их отличие от прикладного программного обеспечения.
Модуль 1. Введение
Ознакомление со спецификой сборки ПО в GNU/Linux (Ubuntu)
Ознакомление с консольными текстовыми редакторами (vi,nano,mcedit)
Ручная и автоматическая сборка ПО (Makefile)
Модель Клиент-Интерфейс-Сервер (КИС)
Статическая сборка библиотек
Совместно используемые библиотеки
Работа с переменными окружения
Модуль 2. Низкоуровневый ввод-вывод и файловые операции
Обзор механизмов ввода-вывода в Linux (Ubuntu)
Файловые дескрипторы
Системные вызовы: open, close, write, read и lseek
Типы файлов
Индексные дескрипторы и жесткие ссылки
Права доступа к файлу
Файловая система proc
Два способа прочесть содержимое директории
Разреженные файлы и специфика их применения
Блокировка областей файла
Модуль 3. Межпроцессное взаимодействие
Механизмы межпроцессного взаимодействия Linux (Ubuntu)
Неименованные каналы (pipes)
Именованные каналы (named pipes)
Сообщения (message queue)
Разделяемая память (shared memory)
Семафоры (semaphores)
Модуль 4. Сокеты
Сокеты в файловом пространстве имен (UNIX-сокеты)
Парные сокеты (pair sockets)
Сетевые сокеты (sockets)
Модуль 5. Сигналы
Знакомство с сигналами (signals)
Отличие сигналов от других механизмов межпроцессного взаимодействия
Специфика обработки сигналов (signal handling)
Модуль 6. Процессы
Клонирование процессов — fork()
Замена исполняемого процесса — exec()
Зомби (zombies) — причины возникновения и способы их устранения
Модуль 7. Потоки
Потоки и процессы
Специфика построения многопоточных приложений (multithreading)
Досрочное завершение потока
Модуль 8. Потоки (продолжение)
Создание обработчика завершения потока
Средства синхронизации потоков (synchronize primitives)
Атрибуты потоков
Модуль 9. Демоны (службы)
Отличие демона от консольной утилиты
Специфика разработки демонов (daemons)
Создание демона использующего сетевые сокеты
Модуль 10. Консольный ввод-вывод
Специфика разработки консольных приложений
Предотвращение перенаправления вывода
Управление терминалом
Сокрытие пароля пользователя при аутентификации
Модуль 11. Отображаемая память
Отображение обычного файла
Совместный доступ к файлу
Частные отображения
Другие применения mmap
Модуль 12. Домашнее задание
Специфика разработки 64-битных приложений
Использование библиотеки ncurses
Программирование графического интерфейса с помощью GTK+
»» Нажмите, для закрытия спойлера | Press to close the spoiler «« Linux (Ubuntu). Уровень 2. Программирование в Linux на C/C++