Библиотека сайта rus-linux.net
Цилюрик О.И. Linux-инструменты для Windows-программистов | ||
Назад | Библиотеки API POSIX | Вперед |
Сигналы
Сигналы UNIX являются специфической и важнейшей составной частью таких систем (достаточно обратить внимание на то, что без сигналов мы не смогли бы завершить ни один процесс в системе). Для начала мы посмотрим, какие сигналы в ней обрабатываются:$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX
Примеры кода для этой группы находятся в архиве usignal.tgz
, все примеры этого архива
написаны на C++ (для разнообразия), и используют общий заголовочный файл:
head.h : #include <iostream> #include <iomanip> using namespace std; #include <stdlib.h> #include <stdio.h> #include <inttypes.h> #include <signal.h> #include <errno.h> #include <unistd.h> #include <sys/wait.h> #define _SIGMIN SIGHUP #define _SIGMAX SIGRTMAX
Первый пример показывает как рекомендуют проверять реализован ли тот или иной сигнал в конкретной POSIX OS:
s1.cc : #include "head.h" int main( int argc, char *argv[] ) { cout << "SIGNO"; for( int i = _SIGMIN; i <= _SIGMAX; i++ ) { if( i % 8 == 1 ) cout << endl << i << ':'; int res = sigaction( i, NULL, NULL ); cout << '\t' << ( ( res != 0 && errno == EINVAL ) ? '-' : '+' ); }; cout << endl; return EXIT_SUCCESS; }; $ ./s1 SIGNO 1: + + + + + + + + 9: + + + + + + + + 17: + + + + + + + + 25: + + + + + + + - 33: - + + + + + + + 41: + + + + + + + + 49: + + + + + + + + 57: + + + + + + + +
Предыдущий раздел: | Оглавление | Следующий раздел: |
Загрузка нового экземпляра (процесса) | Модель ненадёжной обработки сигналов |