Linux System Programming
Български
Български
  • Въведение
  • Част 1 - Основи на Линукс
    • Какво е системно програмиране?
    • Работна среда
    • Отдалечен достъп
    • Как да получите помощ в Линукс?
    • Файлова система
    • Трансфер на файлове
    • Процеси в Линукс
    • Потребители и групи
    • Файлови разрешения
    • Управление на потребители и групи
    • Стандартни потоци
    • Пренасочване и тръбопроводи
    • Текстовият редактор Nano
    • Упражнение върху основи на Линукс
  • Част 2 – Програмиране
    • Kомпилиране
    • Компилатор
    • Изходен програмен код
    • Компилирайте в асемблер
    • Компилирайте до обектен файл
    • Компилирайте до изпълнима програма
    • Стартирайте изпълнимата програма
    • Библиотеки
    • Архиватор
    • Създаване на обектните файл
    • Създаване на статична и динамична библиотеки
    • Програма за намиране сумата на числа
    • Дебъгване
    • Упражнение върху тема програмиране
  • Част 3 – Файлова система и файлове
    • Файлове
    • Файлови системи и именовани пространства
    • Работа с файлове
    • Буферирани срещу небуферирани потоци
    • Библиотека за работа с файлове
    • Отваряне и затваряне на файл
    • Четене на съдържанието на файл
    • Четене и отпечатване на файл
    • Четене и писане на файл
    • Запис на изречения във файл
    • Търсене в файлове и откъслечни файлове
    • Направете файл с дупка
    • Заключване на файлове
    • Заключи и пиши там
    • Упражнение върху работа с файлове
  • Част 4 – Процеси
    • Процеси
    • Управление на процесите
    • Методи за работа с процеси
    • Изпълнение на команда
    • Показване на изходния код на файла
    • Стартиране на дъщерен процес
    • Отпечатване на идентификаторите на процесите
    • Изчакване и прекратяване на дъщерен процес
    • Изпълнение и отпечатване на състоянието
    • Зомбита и проста обработка на сигнали
    • Игра на зомбита
    • Упражнение върху процеси
  • Част 5 – Комуникация между процеси
    • Методи за комуникация между процеси
    • Сигнали
    • Най-важните сигнали
    • Управление на сигналите
    • Обработка на сигнал
    • Изчакване на сигнали
    • Разглеждане на сигнали
    • Показване на информация за сигналите
    • Reentrancy
    • Анонимни и наименувани тръби
    • Работа с тръби
    • Използване на анонимни тръби
    • Използване на именовани тръби
    • Упражнение върху комуникация между процеси
  • Част 6 - Синхронизация на комуникацията между процесите
    • Опашка за съобщения
    • Библиотеки за работа със съобщения
    • Определяне на общите данни
    • Сървър за съобщения
    • Клиент за съобщения
    • Споделена памет
    • Библиотеки за работа със споделена памет
    • Определяне на общите данни
    • Сървър за памет
    • Клиент за памет
    • Семафори
    • Библиотеки за работа със семафори
    • Определяне на общите данни
    • Семафор Сървър
    • Семафор Клиент
    • Упражнение за синхронизация на комуникация между процеси
  • Част 7 – Сокети
    • Сокетите в Линукс
    • Работа със сокети в C
    • Използване на Unix сокети
    • Файл сокет сървър
    • Файл сокет клиент
    • Двойка сокети
    • Пример за двойка сокети
    • Мрежови сокети
    • Мрежов сокет сървър
    • Мрежов сокет клиент
    • Упражнение върху сокети
  • Част 8 – Нишки
    • Въведение в нишките
    • Библиотека за работа с нишки
    • Функции за управление на нишки
    • Създаване на нишки
    • Финализиране на нишки
    • Съединяване на нишки
    • Пример за съединяване на нишки
    • Функции за прекратяване на нишки
    • Типове при прекратяване на нишки
    • Пример за прекратяване на нишки
    • Упражнение върху нишки
  • Част 9 - Синхронизация на нишки
    • Изход от нишка
    • Управление на изход от нишка
    • Пример за изход от нишкa
    • Защо е необходима синхронизация?
    • Механизми за синхронизация
    • Мютекси
    • Кога е необходимо заключване?
    • Типична употреба на мютекси
    • Проблеми при състезателни условия
    • Безопасен за нишките код
    • Състояние на мъртва хватка
    • Създаване и унищожаване на мютекси
    • Заключване и отключване на мутекси
    • Пример за синхронизиране посредством използване на мютекс
    • Синхронизиране със семафори
    • Пример за синхронизиране посредством използване на семафор
    • Упражнение за синхронизация на нишки
  • Част 10 – Демони
    • Какво са демоните?
    • Скелет на демон
    • Чат демон
Powered by GitBook
On this page

Was this helpful?

  1. Част 5 – Комуникация между процеси

Сигнали

Сигналите са механизъм за еднопосочни асинхронни известия. Сигналът може да бъде изпратен от ядрото до процес, от процес до друг процес или от процес до себе си. Сигналите обикновено предупреждават за процес за някое събитие, като например неизправност при сегментиране или потребител, който натиска клавишна комбинация Ctrl-C.

Линукс ядрото изпълнява около 30 сигнала (точният брой зависи от архитектурата).

Всеки сигнал е представен чрез цифрова константа и текстово име. Например SIGHUP, използвано за сигнализиране, че е настъпило прекъсване на терминала, има стойност 1 на архитектурата i386.

С изключение на SIGKILL (което винаги прекратява процеса) и SIGSTOP (което винаги спира процеса) процесите могат да контролират какво се случва, когато получат сигнал.

Те могат да приемат действието по подразбиране, което може да бъде прекратяване на процеса, прекратяване на процеса и разтоварване на ядрото, спиране на процеса или нищо в зависимост от сигнала. Алтернативно, процесите могат да избират изрично да игнорират или да обработват сигнали. Игнорираните сигнали мълчат.

Обработените сигнали причиняват изпълнението на функцията за обработка на сигнал от потребителя. Програмата преминава към тази функция веднага щом сигналът бъде приет и (когато обработващият сигнал се върне), управлението на програмата се възобновява при предишната прекъсната инструкция.

PreviousМетоди за комуникация между процесиNextНай-важните сигнали

Last updated 5 years ago

Was this helpful?