Cómo configurar un objeto para que se cree una sola instancia en Qt
Unix: QSharedMemory "posee" un segmento de memoria compartida. El kernel de Unix libera un segmento de memoria compartida cuando el último subproceso o proceso que tenía una instancia de QSharedMemory adjunta se separa de ese segmento de memoria compartida destruyendo su instancia de QSharedMemory. Sin embargo, si el último subproceso o proceso falla sin ejecutar el destructor QSharedMemory, el segmento de memoria compartida sobrevivirá al bloqueo.
(Se dice que este método tiene problemas de liberación de memoria en Linux y, en algunos casos, provocará excepciones o fallos en el programa)
[cpp] Ver copia pura
//Asegúrate de ejecutarlo solo una vez
QSystemSemaphore sema("JAMKey", "JAMKey", 1, QSystemSemaphore", "JAMKey").1, QSystemSemaphore::Open) ;
p>sema.acquire(); //Operación *** memoria compartida en la sección crítica
QSharedMemory mem("SystemObject"); // Nombre del objeto global
if (!mem.create(1)) // Si hay un objeto global, salga
{
QMessageBox::information(0, MESSAGEB); / Si hay un objeto global, se utilizará para crear nueva memoria