我在內核空間工作,我想搞清楚當應用程序已經停止或崩潰。 當我收到一個ioctl調用時,我可以得到struct task_struct,其中有很多關於應用程序進程的信息。 我的問題是,我想定期檢查進程是否還活着或更好,當進程被終止時有一些異步調用。linux內核檢查,如果進程仍在運行
我的測試環境在QEMU上,並且在應用程序中運行一段時間後,我運行了一個系統(「kill -9 pid」)。同時在內核中,我對task_struct進行了定期檢查:
易失性長狀態;/* -1 unrunnable,0可運行,> 0 *停止/
靜態內聯INT pid_alive(結構的task_struct * P)
的問題是,我的task_struct的指針似乎是不變。通常我會說每個進程都有一個task_struct,當然它與進程狀態一致。否則,我沒有看到的「揮發性長狀態」
我缺少什麼意義呢?難道我在QEMU上測試,是我測試了一下while(1)中的task_struct,它的msleep爲100?任何幫助,將不勝感激。
我會很開心部分,如果當應用程序被關閉模塊(「的/ dev /驅動器」)的文件描述符我無法接受應用程序的PID。
謝謝!