gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:58:28 24 4
gpt4 key购买 nike

我有一个内核模块,它在本应无限运行的初始化例程中有一个 while(1) 循环。

如果我在用户空间程序中有等效代码,当我按下 Control+C 时,用户空间程序将终止,但是对于内核模块而言情况并非如此。

有没有办法向内核模块发送终止信号(当它仍在运行其初始化例程时)以便它可以终止/退出?

提前致谢

最佳答案

在内核中你可以使用signal_pending()fatal_signal_pending()用于检查信号/致命信号是否到达:

while(!fatal_signal_pending(current) {
// infinite loop
}

因此,您可以按 Control+C 来获得 insmod <your-module.ko> , 并且模块的 init 函数将终止循环。


内核线程(使用 kthread_create() 或类似的创建)可能仅在允许使用 allow_signal() 时捕获信号

关于linux-kernel - 如何在内核模块中捕获信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44082441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com