2012-05-28 124 views
2

我正在使用prunsrv來創建Windows服務。我想問你是否有可能查詢進程的狀態(如果它正在運行,停止)或進程是否存在。另外我想用Java程序閱讀pid文件的內容。檢查服務正在運行procrun

回答

0

是的,訣竅:在服務的啓動代碼中創建一個本地套接字。如果您在創建套接字時遇到錯誤,您將知道該服務的一個實例已在運行。

如果要檢查服務是否處於活動狀態,可以連接到套接字。如果失敗了,這個過程就不存在了。

您可以通過此套接字返回服務的PID,因此「monitor」程序不需要知道日誌路徑和PID文件名。如果你實施啓動/停止方法,你甚至可以告訴監視器你的服務的狀態。

這樣做的最大優勢在於,當服務因任何原因終止時,操作系統將確保套接字已關閉。第二個好處是,它獨立於操作系統 - 如果您需要將其移至Linux或Mac,則不需要更改代碼。

相關問題