2013-03-02 35 views
5

我想知道在用戶空間應用程序/進程被終止時是否可以在被激發的Linux內核模塊中使用一個鉤子?關於用戶空間進程死亡的Linux內核模塊信號

+0

它僅適用於特定過程還是所有過程?您是否對接受某些信號的過程感興趣,或者剛剛退出的過程是否有興趣? – Tuxdude 2013-03-02 19:25:43

+1

On ** ARM **,'#include '和'thread_register_notifier()'。使用'THREAD_NOTIFY_EXIT'。請參閱:https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/include/asm/thread_notify.h – 2013-03-02 20:13:21

+0

@Tuxdude:適用於所有進程和任何信號。在我的情況下,我的內核模塊正在保存一些基於PID的數據,並且一旦進程死掉就必須清理它。 – ZedTuX 2013-03-03 11:10:55

回答

2

您可以先在您的內核模塊中註冊一個通知程序鏈。

get_signal_to_deliver內核/ signal.c),其中有只是(這是一個相對的概念恕我直言)有其PF_SIGNALED標誌被設置被殺死任何進程。在這裏,你可以用它TCOMM場像這樣檢查的當前進程的名稱:

char tcomm[sizeof(current->comm)]; 
get_task_comm(tcomm, current); 

如果它確實是受到質疑的過程中,你可以只解僱通知鏈,這將喚醒你的模塊,它具有一直在那條鏈上等待。

+0

謝謝!我會看看這個! – ZedTuX 2014-01-17 14:54:03

相關問題