我有一个内核模块,该模块在初始化例程中有一个while(1)循环,该循环应该无限运行。
如果我在用户空间程序中有等效的代码,则当我按Control + C时,用户空间程序将终止,但是内核模块不是这种情况。
有没有办法向内核模块发送终止信号(当它仍在运行其init例程时),以便它可以终止/退出?
提前致谢
在内核中,您可以使用signal_pending()
或fatal_signal_pending()
检查信号/致命信号是否到达:
while(!fatal_signal_pending(current) { // infinite loop }
因此,您可以按Control + C的insmod
,模块的init函数将终止循环。
内核线程(使用kthread_create()
或类似方法创建)只有在允许使用allow_signal()