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