c - 如何从内核模块 (Linux) 中暂停任务?

标签 c linux kernel

<分区>

我有一个每 10 秒运行一次的 Linux 内核模块,它会扫描是否有任何占用资源的进程。然后我需要将它们暂停一分钟(即代码循环六次),然后让它们再次运行。我已经编写了检查条件的代码,并拥有所有适当的 task_struct 指针。

问题是,我如何暂停任务,给定它的 task_struct 指针?稍后,我该如何恢复该任务?

最佳答案

您可以通过发送STOP 信号来暂停进程,然后通过发送CONT 信号来恢复它;例如,可能通过 kill_pid(task_pid(task_struct), SIGSTOP, 1)kill_pid(task_pid(task_struct), SIGCONT, 1)

这种方法并不完美。例如,另一个进程可以通过向它发送 CONT 信号来保持这样的进程运行,除非您在超时期间也阻止了 CONT 信号。

关于c - 如何从内核模块 (Linux) 中暂停任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13102540/

相关文章:

python - 运行 .detector (openCV) 时内核死机

c - 不寻常的函数指针参数语法

c - 使用 WINAPI 设置窗口的最小和最大尺寸

linux - 运行单元测试时出现 DlibDotNet 异常 : System. DllNotFoundException:无法加载共享库 'DlibDotNetNative'

linux - 丢弃包含字符串 linux 内核模块的数据包

c - 这段代码中的值 12800 将一个字符输出到串口是什么?

c++ - 在文本文件中查找特定字符?

c - 将输出定向到标准输出和共享内存

linux - 如何用另一个空格和字符替换空格

c - 程序的堆内存