Курс: Linux (Ubuntu). Программирование в Linux на C/C++

Курс: Linux (Ubuntu). Программирование в Linux на C/C++

Курс: Linux (Ubuntu). Программирование в Linux на C/C++


Продолжительность курса: 32 ак. ч.

Формат обучения:
• Очно - на территории нашего учебного центра или на территории Заказчика (для корпоративных клиентов)
• Онлайн обучение с помощью вебинаров в режиме "здесь и сейчас"
• Дистанционно с помощью системы СДО в любое удобное для вас время

Описание курса:
Операционная система Linux давно занимает лидирующие позиции в программном обеспечении суперкомпьютеров, она занимает второе место в сегменте интернет-серверов и стремительно набирает популярность в корпоративном сегменте. Этому способствуют главные преимущества Linux по сравнению с коммерческими операционными системами — высокая экономическая эффективность, мобильность, гибкость, оптимальные условия для установки СУБД. На данном курсе Вы получите знания и навыки, необходимые для разработки программного обеспечения для стремительно набирающей популярность операционной системы Linux. Вы станете понимать процесс сборки ПО и специфики компилятора C/C++ из состава GCC. Вы научитесь разбираться в различиях между процессами и потоками, использовать многопоточность и ее специфики. Вы узнаете, кто такие «демоны» и в чем их отличие от прикладного программного обеспечения

Необходимая подготовка:
• Успешное окончание курса Программирование на языке C (Си) или эквивалентная подготовка
• Успешное окончание курса UCP-101. Администрирование Ubuntu или эквивалентная подготовка

Результат обучения:
После изучения курса слушатель будет:
• Понимать процесс сборки ПО и специфики компилятора 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+ Записаться на курс

Характеристики курса

  • Начало: Ведется набор
  • Вендор: Ubuntu
  • Код курса: UCP-300
  • Город: Екатеринбург, Пермь, Челябинск, Самара, Ижевск, Киров,
  • Направление: Ubuntu
  • Академических часов: 32
  • Количество мест: 8
  • Очно: 35900 ₽
  • Дистанционно: 35900 ₽
Записаться на курс

Курсы повышения квалификации
и профессиональной переподготовки


График работы:
Мы отвечаем на звонки и письма в будние дни с 7:00 до 16:00 по Мск

Юридический адрес организации:
614010, г. Пермь, ул. Клары Цеткин, д. 14, офис 32

8 800 (600)-66-16

learning@eshift.ru