C/signal.h/SIGILL

Материал из C\C++ эксперт
Перейти к: навигация, поиск

В POSIX-системах, SIGILL — сигнал, посылаемый процессу при попытке выполнить неправильно сформированную, несуществующую или привилегированную инструкцию.

SIGILL — целочисленная константа, определенная в заголовочном файле signal.h. Символьные имена сигналов используются вместо номеров, так как в разных реализациях номера сигналов могут различаться.

SIG — общий префикс сигналов (от англ. signal), ILL — сокращенное написание англ. illegal instruction — недопустимая инструкция.

Использование

Существует много причин для SIGILL. Одна из наиболее частых причин — передача управления в случайное место памяти — в результате передачи управления через неинициализированный или поврежденный указатель (или адрес возврата в стеке). Другие случаи возможны при ошибках компилятора, повреждении файловой системы или попытке выполнения инструкции, требующей специальных привилегий.

На многих платформах, по мере развития оборудования внедряются новые инструкции, регистры и т. п. и приложения, собранные для современного оборудования могут содержать инструкции, не распознающиеся на более старом оборудовании. Например, SIGILL возникнет при попытке выполнить инструкции MMX на процессоре i486, который их не поддерживает.

SIGILL может быть перехвачен или проигнорирован. Однако игнорирование SIGILL, в некоторых случаях, может привести к непредсказуемым результатам.