QSingleApplication?QMutex?QSharedMemory?我正在寻找能在Windows,OSX和Linux(Ubuntu)中顺利运行的东西.使用Qt 4.7.1
我正在使用Qt C++我用于QSharedMemory限制应用程序的多个实例的位置来实现应用程序.相关代码段main.cpp如下,
QSharedMemory sharedMemory;
sharedMemory.setKey(SM_INSTANCE_KEY);
if (!sharedMemory.create(1))
{
QMessageBox::warning(0, "Console", "An instance of this application is already running!" );
exit(0); /* Exit, already a process is running */
}
Run Code Online (Sandbox Code Playgroud)
在打开应用程序时,我可以看到已为我的应用程序创建了共享内存.(shmid7045192,1B size)
到现在为止还挺好.当我的应用程序由于某种原因崩溃时出现问题.在崩溃时,sharedMemory没有被清除,因此我无法再打开该应用程序.当它崩溃时,附加的应用程序计数变为0,但共享内存不会被删除.相关的屏幕截图如下
根据我的理解,由于共享内存的状态没有dest像其他共享内存那样标记,即使没有任何附加进程也不会被删除.
所以,我的问题是,有没有办法将共享内存的状态标记为dest?