In der Qt-Programmierung gibt es die Klasse QProcess zum starten externer Programme. Das Problem: es wird nicht kontrolliert, ob das externe Programm mehrfach gestartet wird oder nicht.
Der folgende Beispiel-Code prüft, ob das QProcess-Objekt gestartet ist und verhindert den mehrfachen Start:
//avoid multiple starts of external Process (example: special characters map) QProcess p; bool p_started = false; void Dialog::on_Button_clicked(){ if(p.state() == QProcess::NotRunning) p_started = false; if(p_started == true) return; #if defined(Q_OS_LINUX) p.start("kcharselect"); #endif #if defined(Q_OS_WIN) p.start("charmap.exe"); #endif p_started = true; }