Описание тега robotics-notes
Этот ответ частично правильный, еще многое предстоит сделать, чтобы завершить процесс, чем, чтобы освободить память. Однако сигнал SIGKILL
не похлопали по плечу и просьбы сделать что-то, это один из немногих сигналов, что процесс не может игнорировать или обрабатывать. Это означает, что сигнал SIGKILL
всегда обрабатывается ядра обработчика по умолчанию, и это действие по умолчанию, как и большинство сигналов, чтобы остановить процесс приема сигнала. Пользователь пространстве часть программы даже не увидит сигнала, так что нет требования, чтобы сделать что-то, не требуется сотрудничество, и поэтому программа не может безобразничать получив сигнал SIGKILL
, то ли по злому умыслу, или по какой программной ошибки. Вместо того, чтобы со стороны ядра процесс будет обрабатывать сигнал и завершить процесс. Таким образом, ядро напрямую завершает процесс, рассказывая другой частью ядра, что процесс прекращается.
С программной точки зрения, когда ядро хочет убить программу (которая в основном происходит из-за отсутствия ресурсов, особенно не хватает свободной оперативной памяти), есть две возможности, чтобы дублировать код, который делает это, когда процесс должен быть прекращен, или просто вызов одной функции передачи сигнала и знаю, что все необходимое, чтобы завершить процесс будет осуществляться. Второй подход является не только менее начальной работы, это означает, намного меньше работы в долгосрочной перспективе, потому что дублировать код не должен быть сохранен.