1
迄今爲止所見到的所有答案似乎只是在用戶空間內進行檢查。我需要一種專門從設備驅動程序內核空間進行檢查的方法。通過流程的ioctl調用,我得到了與進程關聯的task_struct,因此我掌握了所有包含的信息。如何檢查進程是否仍在c內核中運行?
注:我在尋找的過程在用戶空間
迄今爲止所見到的所有答案似乎只是在用戶空間內進行檢查。我需要一種專門從設備驅動程序內核空間進行檢查的方法。通過流程的ioctl調用,我得到了與進程關聯的task_struct,因此我掌握了所有包含的信息。如何檢查進程是否仍在c內核中運行?
注:我在尋找的過程在用戶空間
運行這是否幫助:
struct task_struct {
volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
...
}
嗯,那肯定看起來像它應該做的伎倆,但也許我的問題是由什麼引起的否則或者我對Linux內核不夠了解。 如果我在用ctrl-c運行時停止進程,那麼task-> state會返回一個大於0的值嗎? 我使用send_sig_info將信號發送到內核空間的進程。該進程運行良好,並在運行時獲取信號,但一旦停止,Linux就會崩潰。在發送信號之前,我有'if(task-> state == 0)'。 – Chris 2012-07-10 16:16:25
@ user1061166如果你點擊ctrl-c,進程應該已經不存在了。 – Alnitak 2012-07-10 16:19:19
那麼在這種情況下,task_struct指針會發生什麼? – Chris 2012-07-10 16:20:22