情況是這麼回事
我在做個windows平台的東西,需要一個管理進程,管理著一堆服務進程,然後我需要在服務進程異常關閉的時候實時通知管理進程。
因為實時性要求的原因,所以心跳的方式直接被我無視了。
因為主要是想達到服務進程異常關閉直接宕掉的情況,因此我找來找去也沒啥好辦法。
唯一可以借鑒的方法是socket的方式,當一對socket連接中的服務器和客戶端,服務器用recv阻塞住,當客戶端異常關閉的時候服務器recv直接返回SOCKETERROR,這樣就能在第一時間處理client的關閉了。
但是我現在要搞得是本地進程間的異常關閉響應,所以我不想用socket。
於是就考慮到文件互斥讀寫,創建一個只存在於內存的共享文件,然後由服務進程對其獨占,而管理進程則阻塞在對該文件的請求中,當服務進程宕掉的時候管理進程能第一時間做出反應。具體實現辦法還沒實現
不知道諸位有沒有什麼具體實現的好方法啊?
這個需要監控內核對象,參考
http://www.cnblogs.com/hongfei/p/3162546.html