2
我想實現一個方法來檢測是否應用程序的另一個實例已經啓動,並已與修補: 1.共享內存 2.命名互斥 3。命名管道檢測流程實例
似乎所有這些都有一個缺陷,即如果「主」應用程序崩潰,「IPC」對象將被掛起使所有將來的應用程序實例認爲有另一個實例處於活動狀態(直到重新啓動) 。理想情況下,我希望有一個對象在進程終止時自動刪除,無論是正常還是崩潰。
想法?
我想實現一個方法來檢測是否應用程序的另一個實例已經啓動,並已與修補: 1.共享內存 2.命名互斥 3。命名管道檢測流程實例
似乎所有這些都有一個缺陷,即如果「主」應用程序崩潰,「IPC」對象將被掛起使所有將來的應用程序實例認爲有另一個實例處於活動狀態(直到重新啓動) 。理想情況下,我希望有一個對象在進程終止時自動刪除,無論是正常還是崩潰。
想法?
我已經看到這通過使用文件和文件鎖定完成。主應用程序檢查/ tmp中是否存在文件。如果文件當前被鎖定,那麼應用程序已經在運行。如果該文件不存在或未被鎖定,則該文件不會運行。根據操作系統的不同,您需要以避免競爭條件的方式進行操作。
這種方式,如果程序崩潰的文件被操作系統自動關閉。
[如何檢測OS X應用程序是否已啓動]的可能重複(http://stackoverflow.com/questions/684911/how-to-detect-whether-an-os-x-application-is-已經推出) – 2012-01-11 14:48:42