OldSchoolHack

Register / Login English

zz

icon Thread: zz

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
"normalerweise"
system("pause") ist die schlechteste Wahl, die man nur treffen kann!

Quote
Warum sollte man kein oder nur in wenigen Fällen system() einsetzen?

system() ist zwar eine standard Funktion, aber die Parameter sind total Platform abhängig! Deswegen sollte man auf system() genauso versuchen zu verzichten, wie auf Systemfunktionen! Und wenn man mal auf die Idee kommt system() zu benuzten, sollte man lieber die passende Systemfunktion nutzen als ein system() aufruf! Einerseits, kann man Systemfunktions aufrufe auf anderen Platformen leicht emulieren und system() ist sehr teuer und gefaehrlich, da immer eine Shell gestartet wird und die Shell zum Beispiel das Programm einfach unterbrechen kann oder informationen ausgeben!

Wichtig ist auch, dass für system() jedes mal eine neue Shell gestartet wird und nach dem Aufruf von system() beendet wird (was natürlich sehr langsam ist!), also nützt das Verändern von zB Umgebungsvariablen (was man auch standard konform mit putenv(3) machen kann) nichts, da sie wieder verschwinden!

system() hat außerdem das Problem, dass das Programm hängen bleiben kann, wenn der Parameter falsch war und die Shellwartet, dass der User reagiert!

Benutz statt system("pause") lieber sowas hier:
CPP Code:
  1. void wait()
  2. {
  3. std::cin.ignore(std::cin.rdbuf()->in_avail());
  4. std::cin.clear();
  5. std::cin.get();
  6. }


__________________

Hallo