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;
}