Parameter für system();

Hallo, kann mir jemand sagen welche Parameter es für system() gibt? Ich kenne nur system(„cls“); system(„shutdown -s“); als ich letztens versucht habe mein win 32 Programm mit system(„exit“) zu beenden hat das nicht geklappt, obwohl es in der cmd ja klappt.

Daraufhin habe ich meinen HP Lehrer gefragt, der hat gemeint, das ich im internet nach den Parametern für system() suchen soll, aber ich habe nichts gefunden, wenn jemand eine gute Seite kennt, wäre ich ihm sehr dankbar wenn er sie mir mitteilt :wink:

Gruß Edd

Für Win: Ausführen->cmd->help

Daraufhin habe ich meinen HP Lehrer gefragt, der hat gemeint,
das ich im internet nach den Parametern für system() suchen
soll, aber ich habe nichts gefunden, wenn jemand eine gute
Seite kennt, wäre ich ihm sehr dankbar wenn er sie mir
mitteilt :wink:

Im Internet hättest Du zumindest finden sollen, dass system() einen Aufruf auf Ebene des Systems erlaubt, von dem das Programm gestartet wurde.
Entsprechend kannst Du damit den gleichen Befehlsvorrat wie auf der Kommandozeile. Und das ist natürlich vom Betriebssystem, der Shell und natürlich der Konfiguration abhängig. Das hat dann aber nichts mehr mit C(++)-Programmierung zu tun.
Der Parameter ist und bleibt eine simple Zeichenkette, die ohne große Prüfung Richtung Kommandozeileninterpreter geschickt wird.

Ciao, Allesquatsch

Hallo Edd,

Hallo, kann mir jemand sagen welche Parameter es für system()
gibt?

Unendlich viele!!

Ich kenne nur system(„cls“); system(„shutdown -s“); als
ich letztens versucht habe mein win 32 Programm mit
system(„exit“) zu beenden hat das nicht geklappt, obwohl es in
der cmd ja klappt.

Nö, tut es in der Kommandozeile auch nicht!

Der String bei system() wird einfach an das Betriebssystem weiter gereicht. Das Betriebssystem startet dann den Commandozeileninterpreter (Shell) und versucht dann die Zeile abzuarbeiten.

Dein Denkfehler mit „exit“ ist folgender:
„exit“ beendet den Commandozeileninterpreter. Da der Interpreter aus deinem Programm gestartet wurde, wird der Interpreter beendet und die Kontrolle wird an dein Programm zurück gegeben.

Unter Windows kannst du den Kommandozeileninterpreter mit „cmd“ manuell starten, dieser wird dann in einem DOS-Fenster geöffnet. Mit „exit“ schliesst du dann den Interpreter, welcher dann, je nach Windows-Einstellungen, meist auch das DOS-Fenster schliesst.

Mit system() kann man alle Programme atarten, welche man auch anders in Windows starten kann, deshalb gibt es ganz unterschiedliche Parameter, je nachdem was an Programmen auf dem PC installiert ist.

Und dann sollte man nicht vergessen, dass system() auch unter anderen Betriebssystemen als Windows funktioniert.Die Parameter sind also immer betriebssystem-spezifisch.

MfG Peter(TOO)

Hallo,
zusätzlich zu den beiden anderen Antworten möchte ich noch hinzufügen, dass du die Funktion system() nur verwenden solltest wenn es keine oder sonst nur schwer realisierende Lösung gibt. Aufrufe von system() schränken dein Programm oftmals unnötig auf ein Betriebssystem ein. Vom Standpunkt der Sicherheit ist die Funktion auch nicht zu empfehelen -> bei unvorsichtiger Verwendung hat Benutzer deines Programmes vollen Zugriff auf Kommandozeile. Außerdem wird die oftmalige Verwendung als schlechter Stil angesehen.

als ich letztens versucht habe mein win 32 Programm mit
system(„exit“) zu beenden hat das nicht geklappt, obwohl es in
der cmd ja klappt.

Zu deinem Beispiel mit exit existiert die Funktion exit() in der C Standardbibliothek http://home.fhtw-berlin.de/~junghans/cref/FUNCTIONS/….
Zusammenfassend:
Aufruf von system nur dann wenn nach Recherche keine Alternative findbar.
Liebe Grüße.
Alex

Hallo! Ihr drei habt mir sehr weitergeholfen, vielen Dank für eure Zeit!
Vielen Dank für den Hinweis auf den befehl „exit()“ an softwareschmied, das haben wir heute zufällig auch in der Ausbildung gelernt :smile:

Nochmals Danke für eure kostbare Zeit

Gruß Edd