Что если все сигналы игнорируются?

Насколько я знаю, какой-то сигнал используется для остановки / продолжения и завершения / уничтожения процесса. Если я заставлю процесс игнорировать все сигналы, что произойдет? Это будет зомби или что-то, что невозможно убить?

Есть сигналы, которые нельзя игнорировать. SIGKILL всегда убивает процесс, не давая ему возможности реагировать. SIGSTOP всегда приостанавливает процесс, не давая ему возможности реагировать. Некоторые варианты Unix могут предоставлять другие невоспламеняемые, не обрабатываемые сигналы; В Linux есть только стандарт KILL и STOP.

Единственный способ, которым процесс может остаться после SIGKILL, – это если он в данный момент находится в непрерывном системном вызове. Процесс не может больше запускать код, но он останется позади, пока системный вызов не завершится или не достигнет точки прерывания. Обычно это слишком мало, чтобы наблюдать, но вы иногда можете увидеть его (длительный процесс в состоянии D ) из-за глючных драйверов, глючного оборудования или иногда из-за сетевых файловых систем. Посмотрите, что, если ‘kill -9’ не работает?

Неубиваемый процесс не будет «зомби», поскольку зомби уже мертв, а термин «процесс зомби» фактически существует и означает запись в таблице процессов, соответствующую уже мертвому процессу. Посмотрите, как Linux работает с зомби

Прежде всего, Zombie – это состояние, в котором процесс освободил все свои ресурсы, кроме PID, и ждет, когда его, наконец, пожнут, то есть полностью освободят.

Процессы ядра имеют состояние Task_Interruptible, что означает, что он не будет реагировать на любые доставленные сигналы.

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