Программирование в Linux на C/C++

e70468ebe9b1881c8aa2f74d03a69e38

Продолжительность курса — 4 дня

Операционная система Linux давно и занимает лидирующие позиции (485 из топ 500 суперкомпьютеров под данным www.top500.org), второе место в сегменте интернет-серверов и стремительно набирает популярность в корпоративном сегменте.

GNU Compilers Collection является лидером в списке аналогичного программного обеспечения по популярности среди средств разработки решений с открытым исходным кодом. 

Цель курса

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

Курс рассчитан на программистов, окончивших курс «Программирование на языке C/C+» или имеющих эквивалентную подготовку.

Приобретаемые навыки

  • Понимание процесса сборки ПО и специфики компилятора C/C++ из состава GCC
  • Умение разрабатывать и использовать разделяемые библиотеки
  • Навыки по использованию функций файлового ввода-вывода
  • Понимание механизмов обеспечения многозадачности и межпроцессного взаимодействия и умение их использовать
  • Навыки по использованию файловых и сетевых сокетов
  • Понимание механизма сигналов и навыки по его использованию
  • знание различий между процессами и потоками, использование многопоточности и ее специфики
  • Навыки по созданию демонов, понимание различий между демонами и прикладным ПО
  • Понимание специфики консольного ввода-вывода и умение ее использовать

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

Программа

  • Введение
    • Ознакомление со спецификой сборки ПО в GNU/Linux
    • Ознакомление с консольными текстовыми редакторами
    • Ручная и автоматическая сборка ПО
    • Модель Клиент-Интерфейс-Сервер (КИС)
    • Статическая сборка библиотек
    • Совместно используемые библиотеки
    • Работа с переменными окружения
  • Низкоуровневый ввод-вывод и файловые операции
    • Обзор механизмов ввода-вывода в Linux
    • Файловые дескрипторы
    • Системные вызовы: open, close, write, read и lseek
    • Типы файлов
    • Индексные дескрипторы и жесткие ссылки
    • Права доступа к файлу
    • Файловая система proc
    • Два способа прочесть содержимое директории
    • Разреженные файлы
    • Блокировка областей файла
  • Межпроцессное взаимодействие
    • Способы межпроцессного взаимодействия: каналы, сообщения, разделяемая память и семафоры
    • Неименованные каналы
  • Именованные каналы
  • Сообщения
  • Разделяемая память
  • Семафоры
  • Сокеты
    • Сокеты в файловом пространстве имен (UNIX-сокеты)
    • Парные сокеты
    • Сетевые сокеты
  • Сигналы
  • Знакомство с сигналами
  • Отличие сигналов от других механизмов межпроцессного взаимодействия
  • Специфика обработки сигналов
  • Процессы
  • Клонирование процессов — fork()
  • Замена исполняемого процесса — exec()
  • Зомби — причины возникновения и способы их устранения
  • Потоки
  • Потоки и процессы
  • Специфика построения многопоточных приложений
  • Досрочное завершение потока
  • Потоки (продолжение)
  • Создание обработчика завершения потока
  • Средства синхронизации потоков
  • Атрибуты потоков
  • Демоны (службы)
  • Отличие демона от консольной утилиты
  • Специфика разработки демонов
  • Создание демона использующего сетевые сокеты
  • Консольный ввод-вывод
  • Предотвращение перенаправления вывода
  • Управление терминалом
  • Сокрытие пароля пользователя при аутентификации
  • Отображаемая память
  • Отображение обычного файла
  • Совместный доступ к файлу
  • Частные отображения
  • Другие применения mmap

Рекомендации по продолжению обучения

  • Разработка драйверов устройств для Linux и Android
Программирование в Linux на C/C++
Авторские курсы,