1
我在ubuntu 16.04下開發。 我遇到的問題是:我想檢測用戶是否已經啓動應用程序,如果是的話,它直接退出。在linux下Qt如何檢測進程已經在運行?
我試過用QLocalServer
,QSharedMemory
來實現。 但問題是:
如果程序崩潰沒有正確關閉本地服務器或銷燬共享內存,則本地套接字/共享內存將留在OS和防止用戶再次啓動程序。
如何處理?
我在ubuntu 16.04下開發。 我遇到的問題是:我想檢測用戶是否已經啓動應用程序,如果是的話,它直接退出。在linux下Qt如何檢測進程已經在運行?
我試過用QLocalServer
,QSharedMemory
來實現。 但問題是:
如果程序崩潰沒有正確關閉本地服務器或銷燬共享內存,則本地套接字/共享內存將留在OS和防止用戶再次啓動程序。
如何處理?
對於你能在這個問題QSharedMemory is not getting deleted on Application crash
有關其應用程序的單個實例更通用的答案看看共享內存的問題,你可以看看Qt Single Application這是qt-solutions
部分
當你的進程死亡時,你的操作系統應該關閉資源,我懷疑它沒有完全死亡,並且仍然在內存中。通常這是通過打開特定文件進行寫入來完成的,因爲每次只有一個進程可以執行此操作。 – nwp
但在Linux下似乎這是Qt的常見現象......只是想知道是否有任何解決方法? – Nyaruko
文件解決方法不足的方式是什麼? – nwp