würde gerne dafür sorgen, daß ein Anwender ein QT-Prog nur einmal unter Linux/Unix ausführen kann.
Unter QT-Windows löse ich das so:
Code: Alles auswählen
#include <windows.h>
[... in main()...]
HANDLE hMutex=CreateMutexA(NULL,TRUE,"ED-NewsEditor");
bool foundInstance=FALSE;
if (GetLastError()==ERROR_ALREADY_EXISTS) foundInstance=TRUE;
if (hMutex) ReleaseMutex(hMutex);
if (foundInstance) {
QMessageBox::warning(NULL,"","Programm ist bereits gestartet!"));
QCoreApplication::exit();
return 0;
}
Habe mir QMutex und QSemaphore angesehen, aber das geht wohl nur innerhalb der Child-Threads, nicht bei 2 unabhängig gestarteten Anwendungen.
Über Shell-Console-Aufruf ginge es sicher so:
ps ux|grep "appName"|grep -cv "grep" => Anzahl der Starts dieser Anwendung
Finde ich aber nicht wirklich elegant.
Hat jemand ne bessere Idee?
Danke für Tips, Bernd