SIGSEGV

SIGSEGV
ОписПомилка трансляції адреси (не може бути перехопленим або проігнорованим)
Дія за замовчуваннямЗавершує процес
SA_SIGINFO macros
None


SIGSEGV — сигнал на POSIX-сумісних платформах, який посилається процесу при спробі адресування пам'яті, яка не належить процесу. Символьна змінна SIGSEGV оголошена у заголовному файлі signal.h. Символьні імена для сигналів використовуються через те, що їхні номери залежать від конкретної платформи.

Етимологія

SIG є загальноприйнятий префіксом для назв сигналів. SEGV англ. segmentation violation — означає помилка сегментації.

Використання

В окремих системах сигнал SIGSEGV не посилається процесу, а використовується ядром системи для підкачки сторінок, в інших, в тому числі UNIX-системах призводить до завершення процесу. Одними з частих причин генерації такого сигналу є помилка в програмі, в результаті якої відбувається вихід за межі масиву або звернення до пам'ті через нульовий або неініціалізований покажчик.

Приклад

Програма мовою C, що намагається виконанти запис в комірку пам'яті з одресою 0:

int main()
{
  *(int *)0 = 1;
  return 0;
}

В UNIX-системах її виконання призводить до генерації сигналу SIGSEGV.

Див. також

  • п
  • о
  • р
Сигнали операційних систем
POSIX
SIGABRT · SIGALRM · SIGFPE · SIGHUP · SIGILL · SIGINT · SIGKILL · SIGPIPE · SIGQUIT · SIGSEGV · SIGTERM · SIGUSR1 · SIGUSR2 · SIGCHLD · SIGCONT · SIGSTOP · SIGTSTP · SIGTTIN · SIGTTOU · SIGBUS · SIGPOLL · SIGPROF · SIGSYS · SIGTRAP · SIGURG · SIGVTALRM · SIGXCPU · SIGXFSZ[ru] · Сигнали реального часу, що визначаються користувачем (SIGRTMIN ... SIGRTMAX[ru])
не-POSIX
SIGIOT · SIGEMT[ru] · SIGSTKFLT[ru] · SIGIO · SIGCLD · SIGINFO · SIGPWR · SIGLOST · SIGWINCH[ru] · SIGUNUSED[ru]
Робота