Технически, нет способа сделать процесс неубиваемым.
Конечно, для пользователей без полномочий root они могут уничтожать только процессы с одинаковым идентификатором пользователя, поэтому, если вы можете создавать разные учетные записи, вы можете использовать «уникальный» идентификатор пользователя для процесса, и тогда только root может уничтожить его.
Простое, но менее надежное решение состоит в том, чтобы ваш процесс перехватывал как можно больше сигналов (возможно, игнорируя их). Это подходит только для игрушечных примеров или не состязательной среды, так как нет способа поймать сигнал KILL (сигнал 9), но в противном случае вы можете избежать их гибели.
Наконец, вы можете организовать процесс возрождения, если вас убьют. Это также хрупкий (очень хрупкий), но будет немного сложнее удалить. Это можно сделать с помощью собственного процесса мониторинга или с помощью inittab. Для злоумышленника, который знает, что он делает, это можно легко обойти, убив несколько процессов одновременно.