Konsolenanwendung einmal ganz genau

OP #817637
Hallo an alle!

Ich würd ja nicht fragen, wenn ich nicht der Meinung wäre, dass es 
wirklich was neues ist. Fasst jeder von euch hat doch bereits eine 
Konsolenanwendung programmiert. Doch anders als bei Programmen, bei 
denen man ein Fenster und ähnliches hart selbst programmieren muss, 
scheint dies bei Konsolenanwendungen nicht der Fall sein zu müssen. Ich 
möchte nun wissen, wo der große Unterschied zwischen Konsolenanwendungen 
und dem Rest liegt, und welche Arbeit mir der Compiler oder die IDE beim 
Erstellen einer Konsolenanwendung abnimmt.

Mit freundlichen Grüßen

       Patrick O.
#817642
Patrick O. wrote:
> Doch anders als bei Programmen, bei
> denen man ein Fenster und ähnliches hart selbst programmieren muss,
> scheint dies bei Konsolenanwendungen nicht der Fall sein zu müssen.

Bei einer Konsolenanwendung muss man sich nie um die Programmierung 
irgendwelcher Fenster kümmern. Aber nicht, weil es einem abgenommen 
wird, sondern weil eine Konsolenanwendung einfach keine Fenster hat. Sie 
läuft auf/in einer Text-Konsole (daher der Name).
Gast #817674
> Ich möchte nun wissen, wo der große Unterschied zwischen
> Konsolenanwendungen und dem Rest liegt,

Das hängt vom System ab. Unter Linux gibt es z.B. keinen Unterschied. 
Unter Windows dagegen schon, da die Konsolenausgabe hier nicht einfach 
in ein virtuelles Terminal geleitet wird, sondern das Programm selbst 
ein Konsolen-Fenster aufmachen muß.

> und welche Arbeit mir der Compiler oder die IDE beim Erstellen einer
> Konsolenanwendung abnimmt.

Die IDE hat eigentlich nicht viel damit zu tun. Wenn's um Windows gehen 
sollte, so nimmt dir der Compiler das Erzeugen des Konsolenfensters und 
Umleiten der Standard-Ein- und -Ausgabe ab.
Gast #819598
> Kann es sein, dass es in ner dll von Windows ne Funktion gibt, die ein
> Konsolenfenster für den momentanen Prozess zur Verfügung stellt?

Ja, das kann sein.
#819694
Eine Windows-Konsolanwendung hat keine Message-Queue und kann daher 
keine Windowsmessages empfangen. Sie unterscheidet sich nicht 
prinzipiell von einer Anwendung, wie man sie früher für DOS schrieb - 
das verfügt über keinerlei Window-Funktionalität.

Man kann unter Windows sogar noch das alte DOS-API verwenden und 
.com-Programme schreiben - primitiver gings auch zu DOS-Zeiten nicht...

Das Konsolfenster, das sich beim Start einer Konsol-App öffnet, wird von 
Windows bereitgestellt.
Persönliche Seite #819760
> Sie unterscheidet sich nicht
> prinzipiell von einer Anwendung, wie man sie früher für
> DOS schrieb - das verfügt über keinerlei Window-Funktionalität.

Nicht ganz. Einerseits kann eine Win32-Konsolenapplikation die Win32-API 
verwenden, was doch ein kleines bisschen andere Möglichkeiten bietet, 
andererseits kann eine Win32-Konsolenapplikation durchaus auch mit 
Windows-Fenstern zusammenarbeiten, am simpelsten geht das beispielsweise 
mit MessageBox(), aber auch das Senden von Nachrichten an andere Fenster 
ist möglich. Ebenso kann eine Konsolenapplikation nachträglich einen 
Nachrichtenhandler installieren und dann auf "normale" Art und Weise mit 
Fenstern hantieren.
OP #819762
Wird das Konsolenfenster also vom Betriebssystemgeöffnet, nachdem oder 
bevor es den Portable Executable Kopf der anwednung durchgegangen is?

Aber woher weiß das BS nun, dass es das dann doch nicht öffnen muss? Zum 
Beispiel bei ner Fensteranwendung.
#819795
Rufus t. Firefly wrote:
> Damit ist also auch klar, daß das Konsolenfenster erst /nach/
> Interpretation der Flags geöffnet/erzeugt oder beibehalten wird.

Allerdings wird das festgestellt, bevor die Applikation zum ersten mal 
die Kontrolle erhält.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.