KOnsole schliesen
-
7xCore schrieb:
Hey ,
Ich bin mir nicht sicher ob das os abhängig ist aber versuche es mal mit
exit(0);/*kein fehler */ exit(1); /*fehler */Acuh wenn das keine schöne art ist
edit: hat
shadow
schon gepostet sorry
Nein, shadow meinte so etwas wie system("exit"), glaube ich. Bei exit(return_code) kannst du nach dem Schließen keinen Code mehr ausführen (außer vielleicht im abort-Handler oder wie der heißt).
-
Ah ok falsch verstanden ...
Je mehr Käse, desto mehr Löcher. Je mehr Löcher, desto weniger Käse. Also: Je mehr Käse, desto weniger Käse!
nice 
-
wxSkip schrieb:
Nein, shadow meinte so etwas wie system("exit"), glaube ich. Bei exit(return_code) kannst du nach dem Schließen keinen Code mehr ausführen (außer vielleicht im abort-Handler oder wie der heißt).
system("exit") funktioniert?
Ich kenne unter Windows
http://msdn.microsoft.com/en-us/library/ms683150.aspx
Wie man es bei Linux macht weiss ich nicht.Würde mich halt wundern wenn system("exit") funktioniert.
Ist ja ein neuer Prozess der erstellt wird, und der dann "exit" ausführt. Und wieso sollte der neue Prozess "mein" Console-Handle freigeben können? Das wäre schon recht hart...
-
hustbaer schrieb:
wxSkip schrieb:
Nein, shadow meinte so etwas wie system("exit"), glaube ich. Bei exit(return_code) kannst du nach dem Schließen keinen Code mehr ausführen (außer vielleicht im abort-Handler oder wie der heißt).
system("exit") funktioniert?
Probier's doch aus

Ich vermute eher nicht.
-
Wenn man die Konsole entsprechend startet (konsole -e meinProgramm oder xterm -e meinProgramm), dann wird sie auch nach Programmende geschlossen. Man kann das Programm auch mit exec meinProgramm in der Konsole starten, dann wird sie am Programmende ebenfalls geschlossen. Oder man sucht mit getppid die Prozessid des aufrufenden Prozesses und beendet ihn mit kill.
Das hat aber alles irgendwie nichts mit C++ zu tun

-
system("exit") läuft auf /bin/sh -c "exit" hinaus, macht also eine Shell auf und schließt sie gleich wieder. Was gehen könnte (ich hab das jetzt nicht geprüft) ist
kill(getppid(), SIGTERM);Das schickt dem Elternprozess (das wird idR die Shell sein) SIGTERM, woraufhin der sich beenden sollte.
-
seldon schrieb:
Das schickt dem Elternprozess (das wird idR die Shell sein) SIGTERM, woraufhin der sich beenden sollte.
Und unseren Prozess gleich mitnimmt, weil er uns ein SIGPIPE schickt, dass wir nicht abgefangen haben.
Ja, das geht gerade sehr in Linux-Systemprogrammierung, aber da ich mir recht sicher bin, dass der Threadersteller gar nicht die Frage stellen wollte, die er gestellt hat, lasse ich den Thread mal hier, falls er sich noch mal meldet was er eigentlich möchte.
-
Bis jetzt ging nix was ihr geschriben habt , ja bei Windows ist es einfacher in demm man ein Befehl bruacht damit Console sich nicht schlisen.
-
Ach, du willst die Konsole offenhalten? In der ursprünglichen Frage war genau vom Gegenteil die Rede.
Das geht plattformunabhängig beispielsweise so:
#include <limits> #include <iostream> ... std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); std::cin.get();...dann muss Enter gedrückt werden, um fortzufahren.
-
seldon schrieb:
Ach, du willst die Konsole offenhalten? In der ursprünglichen Frage war genau vom Gegenteil die Rede.
Das geht plattformunabhängig beispielsweise so:
#include <limits> #include <iostream> ... std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); std::cin.get();...dann muss Enter gedrückt werden, um fortzufahren.
Man, diese Hacker-Variante eines system("pause") habe ich ja schon seit Ewigkeiten nicht mehr gesehen. Respekt

-
-ProGresS- schrieb:
Bis jetzt ging nix was ihr geschriben habt , ja bei Windows ist es einfacher in demm man ein Befehl bruacht damit Console sich nicht schlisen.
Beim nächsten Mal formulier einfach mal richtig, was du willst. Dann kriegst du auch direkt vernünftige Antworten und musst dich nicht unnötigerweise beschweren.
