Сигнали

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

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

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

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

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

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

results matching ""

    No results matching ""