如何检查进程是否仍在c内核中运行?

问题描述:

迄今为止所见到的所有答案似乎只是在用户空间内进行检查。我需要一种专门从设备驱动程序内核空间进行检查的方法。通过流程的ioctl调用,我得到了与进程关联的task_struct,因此我掌握了所有包含的信息。如何检查进程是否仍在c内核中运行?

注:我在寻找的过程在用户空间

运行这是否帮助:

struct task_struct { 
    volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ 
    ... 
} 
+0

嗯,那肯定看起来像它应该做的伎俩,但也许我的问题是由什么引起的否则或者我对Linux内核不够了解。 如果我在用ctrl-c运行时停止进程,那么task-> state会返回一个大于0的值吗? 我使用send_sig_info将信号发送到内核空间的进程。该进程运行良好,并在运行时获取信号,但一旦停止,Linux就会崩溃。在发送信号之前,我有'if(task-> state == 0)'。 – Chris 2012-07-10 16:16:25

+0

@ user1061166如果你点击ctrl-c,进程应该已经不存在了。 – Alnitak 2012-07-10 16:19:19

+0

那么在这种情况下,task_struct指针会发生什么? – Chris 2012-07-10 16:20:22