Сигнал

From EjudgeWiki

Сигнал в POSIX-системах - это синхронное или асинхронное сообщение, посланное процессу ядром операционной системы, другим процессом или самим собой. Получение сигнала процессом вызывает приостановку нормального выполнения программы и выполнение действия в зависимости от установленной реакции на сигнал.

Большинство сигналов по умолчанию приводят к снятию процесса с выполнения. При работе тестируемой программы могут возникать следующие сигналы (в скобках указан его номер):

  • SIGSEGV (11) - процесс попытался обратится по адресу виртуального адресного пространства, который либо недействителен, либо закрыт на чтение или запись. Скорее всего, это означает, что программа неправильно работает с памятью. Кроме того, ошибка может возникать при переполнении стека.
  • SIGBUS (7) - то же самое, что и SIGSEGV.
  • SIGILL (4) - попытка выполнить несуществующую инструкцию процессора. Скорее всего, это означает, что в процессе выполнения произошла передача управления на случайный адрес.
  • SIGABRT (6) - программа на C или C++ выполнила вызов функции abort().
  • SIGFPE (8) - в программах на C или C++ возникает при целочисленном делении на 0. В программах на Pascal/Delphi может возникать и в других ситуациях (уточнить каких).
  • SIGKILL (9) - скорее всего означает, что программа не может быть выполнена, так как для того, чтобы начать выполнение, требуется больше памяти, чем разрешено. Другими словами, в программе объявлены глобальные переменные слишком большого размера.