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 – Комуникация между процеси

Управление на сигналите

метод
описание

sigemptyset()

инициализира празно множество от сигнали, като всички сигнали са изключени от множеството.

sigfillset()

инициализира пълно множество от сигнали, включващо всичките сигнали.

sigaddset()

добавя сигнал към множество.

sigdelset()

премахва сигнал от множество.

sigprocmask()

извлича и/или променя сигналната маска на извикващата нишка.

sigaction()

променя действието на сигнала.

sigwait()

чака сигнал.

strsignal()

връща низ описващ сигнала.

#include <signal.h>

int sigemptyset (sigget_t *set);
int sigaddset (sigset_t *set, int signo);
int sigprocmask (int how, cont sigset_t *set, sigset_t *oldset);

int sigaction (int signo, const struct sigaction *act, struct sigaction *oldact);

struct sigaction {
  void (*sa_handler)(int);
  void (*sa_sigaction)(int, siginfo_t *, void *);
  sigset_t sa_mark;
  int sa_flags;
  void (*sa_restorer)(void);
};

sigemptyset() инициализира наборът от сигнали, зададен от комплекта, като го маркира празен (всички сигнали са изключени от комплекта).

sigaddset() добавя сигнал към комплекта от сигнали, зададен от комплекта, докато sigdelset() премахва знака от набора от сигнали, зададен от комплекта. И двете връщат 0 при успех, или -1 при грешка, в който случай грешката е настроена на код за грешка EINVAL, което означава, че знакът е невалиден идентификатор на сигнала.

Поведението на sigprocmask() зависи от стойността на едно от следните:

Поле
Описание

SIG_SETMASK

Задава се сигнална маска на извикващия процес.

SIG_BLOCK

Сигналите се добавят към сигналната маска на извикващият процес.

SIG_UNBLOCK

Сигналите се премахват от сигналната маска на извикващия процес.

Структура sigaction:

Поле
Описание

SA_HANDLER

Адрес на манипулатора SIG_IGN или SIG_DFL

SA_MASK

Сигнали за блокиране

SA_FLAGS

Допълнителни флагове, като SA_RESETHAND

SA_RESETHAND

Позволява режим "еднократно". Поведението на дадения сигнал се връща към стандартното, след като обработващият сигнал се върне.

Извикването на sigaction() променя поведението на сигнала, идентифициран от signo, което може да бъде всяка стойност освен тези, свързани със SIGKILL и SIGSTOP. Ако act не е NULL, системното извикване променя текущото поведение на сигнала, както е посочено в act. Ако oldact не е NULL, системното извикване запазва предишното поведение на даден сигнал (или текущия, ако act е NULL).

PreviousНай-важните сигналиNextОбработка на сигнал

Last updated 3 years ago

Was this helpful?