Linux kernel 如何在内核模块中捕获信号

Linux kernel 如何在内核模块中捕获信号,linux-kernel,kernel-module,Linux Kernel,Kernel Module,我有一个内核模块,在init例程中有一个while(1)循环,它应该无限运行 如果我在一个用户空间程序中有一个等价的代码,当我按下Control+C时,用户空间程序终止,但是内核模块不是这样 有没有一种方法可以向内核模块发送kill信号(当它仍在运行init例程时),以便它可以终止/退出 提前感谢在内核中,您可以使用信号挂起()或致命信号挂起()检查信号/致命信号是否到达: while(!fatal_signal_pending(current) { // infinite loop }

我有一个内核模块,在init例程中有一个while(1)循环,它应该无限运行

如果我在一个用户空间程序中有一个等价的代码,当我按下Control+C时,用户空间程序终止,但是内核模块不是这样

有没有一种方法可以向内核模块发送kill信号(当它仍在运行init例程时),以便它可以终止/退出


提前感谢

在内核中,您可以使用
信号挂起()
致命信号挂起()
检查信号/致命信号是否到达:

while(!fatal_signal_pending(current) {
    // infinite loop
}
因此,您可以按Control+C键来选择
insmod
,模块的init函数将终止循环


内核线程(使用
kthread\u create()
或类似工具创建)仅当允许使用
allow\u signal()