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