Мне интересно, есть ли хук, который можно использовать в модуле ядра Linux, который запускается, когда приложение/процесс пользовательского пространства уничтожается?
Сигнал модуля ядра Linux в процессе пользовательского пространства убит
Ответы (1)
Вы можете сначала зарегистрироваться для цепочки уведомлений в вашем модуле ядра.
Внутри get_signal_to_deliver
(kernel/signal.c) любой процесс, который только (имхо, относительный термин) был убит, имеет свой флаг PF_SIGNALED. устанавливается. Здесь вы можете проверить имя текущего процесса, используя его поле tcomm следующим образом:
char tcomm[sizeof(current->comm)];
get_task_comm(tcomm, current);
Если это действительно рассматриваемый процесс, вы можете просто запустить цепочку уведомлений, которая разбудит ваш модуль, ожидающий в этой цепочке.
person
HighOnMeat
schedule
15.01.2014
Благодарю вас! Я посмотрю на это!
- person ZedTuX; 17.01.2014
#include <asm/thread_notify.h>
иthread_register_notifier()
. ИспользуйтеTHREAD_NOTIFY_EXIT
. См.: git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/ - person artless noise   schedule 03.03.2013do_exit()
- это полный беспорядок, потому что все подсистемы, заинтересованные в обработчиках выхода, помещают собственный вызов функции в (длинный) список. Вышеупомянутый ARM вызывается оттуда черезexit_thread()
, который является выходным хуком для конкретной архитектуры. - person FrankH.   schedule 07.03.2013