2012-04-02 29 views
0

那么,我想修改内核,定义一个SIGNAL(让我们说#define SIGHELLO 33)并捕获它(让我们说printk“lalalalala”)。我知道在哪里定义,但没有抓住它。 (程序输出未知信号并终止)我不知道在哪里注入。希望有人知道。如何定义一个信号,并在linux内核代码中捕获它

回答

0

您似乎对信号的目的和处理感到困惑。有两个特殊的异常(SIGKILL和SIGSTOP/SIGTSTP),信号在内核中没有得到特殊的处理。 (它们可以使用signal()在用户空间中被捕获。)

也就是说,信号处理在kernel/signal.c中。我不相信这个文件中的行为可以被内核模块修改。

+0

我想要做的是有点不同。我想从内核中的一个进程发送一个信号到另一个进程。一旦其他进程接收到信号,它就会执行一些操作。我猜SIGUNUSED可能是一个帮助。 – Nova 2012-04-03 13:44:54

+0

如果它要在内核中生成和处理,为什么需要涉及信号?你有什么理由不能直接执行信号的动作吗? – duskwuff 2012-04-03 15:07:53

+0

我想在调度程序切换到该进程时跟踪进程的进程空间信息和CPU状态。这意味着无论何时我想跟踪它,我都会在另一个进程中运行一个系统调用,并提醒目标进程做它自己。这就是为什么SIGNAL涉及这里。 – Nova 2012-04-03 16:25:57

相关问题