我正在研究一個內核模塊,我需要「知道」給定的進程崩潰了。當用戶進程終止/接收信號時中斷內核模塊?
現在我的做法是設置內核模塊中的週期性定時器中斷;在每個定時器中斷上,我檢查該進程的task_struct.state和task_struct.exitstate值。
我想知道是否有辦法在內核模塊中設置中斷,當進程終止時,或進程收到給定信號(例如,SIGINT或SIGHUP)時該中斷會關閉。
謝謝!
編輯:這裏的一個前提條件是,我不能修改用戶應用程序。或者至少,這將是一個更加艱難賣給如果我把額外的要求/約束的S/W來自其他供應商的客戶...
謝謝!這裏有一個問題,我應該提到:我無法修改用戶應用程序。或者至少,這將是一個困難得多出售給客戶,如果我把額外的要求/約束的S/W從其他供應商... 也許修補方法是值得看,但我想的複雜性與貿易如果由於週期性定時器中斷導致的性能下降達到可接受性閾值,那麼關閉將是值得的... –
有一個封裝器來啓動應用程序併發信號給你的模塊嗎?如果子進程(應用程序進程)通過'waitpid()'等進程崩潰或退出,進程的父進程(即包裝器)將得到通知。你甚至可以讓包裝打開驅動程序的設備節點,然後exec()應用程序,而不關閉設備節點。孩子將繼承打開的文件描述符並保持打開狀態,直到它關閉或終止。封裝器不需要在啓動應用程序之前存在。 – TrentP