2012-07-10 127 views
1

迄今爲止所見到的所有答案似乎只是在用戶空間內進行檢查。我需要一種專門從設備驅動程序內核空間進行檢查的方法。通過流程的ioctl調用,我得到了與進程關聯的task_struct,因此我掌握了所有包含的信息。如何檢查進程是否仍在c內核中運行?

注:我在尋找的過程在用戶空間

回答

0

運行這是否幫助:

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

相關問題