Was bewirkt ein System aufruf wirklich?
-
Hallo zusammen,
ich bin mir nicht ganz sicher, ob das hier das richtige Unterforum ist. Falls es das falsche sein sollte, dann bitte ich darum den Thread zu verschieben

Seit einiger Zeit durchforste ich das Web und finde leider keine zufriedenstellende Antwort, daher wollte ich kurz nachfragen, was der Aufruf "system" bewirkt.
Folgender Hintergrund:
Ich studiere Maschinenbau, daher ist mir das Programmieren nicht per se in die Wiege gelegt. Im Rahmen einer Arbeit ist es meine Aufgabe ein bestehendes Programm zu erweitern, so dass die Berechnungen nicht 1x sondern x-Mal durchgeführt werden für sich ändernde Eingabewerte. Das Ur-Programm ist nicht von mir, daher kann ich keinen Code hier reinkopieren, zumindest keinen der nicht nur von mir ist.
**
Das Problem in der Anwendung:**
Nach langem Suchen hab ich den Fehler (so glaube ich) darauf reduzieren können, dass ein Methode einen Fehler erzeugt sobald ich sie 2x mit den selben Eingabewerten hintereinander aufrufe.Das Kuriose:
Schreibe ich an den Anfang der Methode einen Systembefehl, vollkommen unabhängig davon ob er funktioniert oder nicht, dann läuft das Programm fehlerfrei (abgesehen von der Ausgabe, dass er den Systembefehl nicht kennt).Bsp für den Systembefehl:
Im Rahmen der Methode rufe ich folgendes auf, damit das Programm keinen Fehler erzeugt:void ausgabe::pause() { cout <<"Methode Implementiere erreicht\n"; system("Bratwurst"); // Pause geht auch, ist eigentlich egal }Debugmeldungen - nicht erfolgreich gestartet:
STATUS_STACK_BUFFER_OVERRUN encounteredDebugmeldungen - erfolgreich gestartet:
"Test.exe": "ImageAtBase0x4a3d0000" geladen, Der Ladevorgang wurde durch die Einstellung zum Einschließen/Ausschließen deaktiviert.
"Test.exe": "ImageAtBase0x4a3d0000" entladen.
"Test.exe": "ImageAtBase0x4aad0000" geladen, Der Ladevorgang wurde durch die Einstellung zum Einschließen/Ausschließen deaktiviert.
"Test.exe": "ImageAtBase0x4aad0000" entladen.
"Test.exe": "ImageAtBase0x49fb0000" geladen, Der Ladevorgang wurde durch die Einstellung zum Einschließen/Ausschließen deaktiviert.
"Test.exe": "ImageAtBase0x49fb0000" entladen.Bin da etwas ratlos muss ich ehrlich zugeben. Hab den Fehler nur dadurch gefunden, dass ich überall Pause-Befehle eingebaut habe um zu sehen wie weit er kommt. Als das Programm dann einfach durchgelaufen ist, bin ich stutzig geworden. Nun weiß ich leider nicht, ob der Systembefehl noch andere Auswirkungen hat?
Fragen über Fragen

Grüße aus dem Tal der Ratlosigkeit

DLA
-
Nein, das ist Glück. Du solltest lieber den richtigen Fehler finden. Von system() ist allgemein eher abzuraten.
-
Hier noch der Grund:
http://www.gidnetwork.com/b-61.html
-
Da geb ich dir vollkommen recht mit den Systembefehlen.
Ich verwende sie primär dafür, um zu schauen wie weit er gekommen ist. Im fertigen Programm sollen diese Befehle dann nicht mehr drin sein.Meine Bemühung ist es natürlich den echten Fehler zu finden. Meine Hoffnung war nur ggf. Rückschlüsse vom Systembefehl auf den Fehler zu bekommen. War einen Versuch wert

-
Der system- Befehl ruft eine Shell auf und führt das Kommando dort aus. Nach der Ausführung kehrt er zum Programm zurück.
Dafür gibt es sicherlich hinreichend gute Dinge, die man damit machen kann. Pause gehört mitnichten dazu.
RTFM: http://www.cplusplus.com/reference/clibrary/cstdlib/system/
Ciao MM
-
DLA schrieb:
Da geb ich dir vollkommen recht mit den Systembefehlen.
Ich verwende sie primär dafür, um zu schauen wie weit er gekommen ist.Dafür könntest du einen Debugger benutzen. Oder cout-Statements.
-
DLA schrieb:
Seit einiger Zeit durchforste ich das Web und finde leider keine zufriedenstellende Antwort,
Kleiner Tipp: beim Suchen möglichst das Stichwort "Systemaufruf" weglassen. Darunter versteht man nämlich im Allgemeinen etwas anderes als den Aufruf der Standardlibrary-Funktion system.

-
Danke für eure Bemühungen und Anregungen

So nah und doch so fern - Debugger statt Pause hat dann doch zum Erfolg geführt. Hab den Fehler finden können und werd in Zukunft einen Bogen um "system" machen.
Vielen Dank

Grüße
DLA