Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Bildschirm löschen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
muello



Anmeldungsdatum: 11.02.2001
Beiträge: 28

BeitragVerfasst am: 26. Dez 2001 22:57   Titel: Bildschirm löschen

Hallo Linuxianer,

ich bin ein Newbie in Sachen C++. In einem Grundlagenkurs haben wir mit
Borland C++Builder programmiert. Da ich eine Linuxkiste und keine
500 Euro für Borland übrig habe, wollte ich den GNU <c++>Compiler nutzen. Die ersten versuche verliefen zufriedenstellend.
Mittlerweile misse ich ein paar Headerfiles, wie z.B. die conio.h. Und hier liegt auch mein Prob.

Wie kann ich mit dem <c++> den aktuellen Bildschirm löschen? Bisher bin ich nur auf das Entwicklerpaket <ncurses> gestossen.

Ich würde mich über ein paar Antworten von Euch freuen. Vielleicht hat der Eine oder Andere noch etwas Hintergrundwissen mit dem Umgang des <c++> oder kann mir evt. einen anderen Compiler empfehlen.

Cu @mastertm
 
Benutzer-Profile anzeigen Private Nachricht senden

bakunin



Anmeldungsdatum: 16.08.1999
Beiträge: 597
Wohnort: Lorsch (Südhessen)

BeitragVerfasst am: 27. Dez 2001 0:53   Titel: Re: Bildschirm löschen

Hi mastertm!

Die conio.h ist eine Erfindung, die in keinem Standard vorkommt und es nur unter DOS/Windows gibt. Unter Unix- und GNU-Systemen verwendet man tatsächlich die curses-Bibliothek bzw. im Linux-basierten GNU-System die NCurses-Implementierung davon.

Alternativ kannst du z.B. - was manch einer vielleicht nicht elegant finden wird, was aber durchaus eine recht zuverlässige und portable Lösung ist - system("clear") aufrufen. Die Funktion system() ist in stdlib.h deklariert. Eine weitere Möglichkeit wäre, direkt die entsprechende Terminal-Kontrollsequenz auszugeben, aber das ist noch so halbwegs portabel (auf manchen exotischen Terminal-Typen wird es nicht funktionieren) und sieht recht hässlich im Quellcode aus, nämlich so: printf("\033[H\033[J").

Was den Umgang mit dem GNU C++ Compiler angeht, sind natürlich erst einmal die Optionen relevant. Hier ein paar ausgewählte, die ich allgemein hilfreich finde:

-Wall (mehr Warnungen aktivieren)
-W (zusätzliche Warnungen aktivieren)
-Wno-unused (nicht wegen definierter, aber nicht benutzer Variablen warnen)
-c (nur Compilieren, nicht linken)
-O1 (ein wenig optimieren)
-O2 (viel optimieren)
-O3 (extrem optimieren, nicht immer sinnvoll)
-fomit-frame-pointer (eine ganz bestimmte Optimierung)
-g (Debugging-Symbole verwenden, damit man es z.B. mit gdb debuggen kann)
-lXXX (gegen Bibliothek XXX linken, z.B. -lncurses für die NCurses-Bibliothek, muss _nach_ den Dateinamen kommen, die der Compiler verarbeiten soll, also z.B. "g++ -Wall -O2 -g foo.cpp -lncurses")
-DXXX (Definiere Symbol XXX, wie mit #define XXX)

Es gibt natürlich weit mehr (siehe "info gcc" oder die veraltende Manpage "man gcc"), aber diese sollten für den Anfang reichen. "info gcc" gibt auch noch einige weiterführende Tipps, z.B. über Erweiterungen des GNU-Compilers wie geschachtelte Funktionen usw.

Außer dem GNU-Compiler gibt es nichts, was wirklich Nennenswert wäre, höchstens noch den Open C++ Compiler (http://www.csg.is.titech.ac.jp/~chiba/openc++.html), der es ermöglicht, C++ zu erweitern, was eher für Fortgeschrittene interessant ist und ich weiß auch nicht, wie brauchbar das Teil ist, d.h. ich habe ihn nur zufällig in der Debian-Paketliste gefunden. Es gibt natürlich auch kostenpflichtige proprietäre Compiler, aber die sind hier wohl nicht interessant.

Cheers,
GNU/Wolfgang
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

muello



Anmeldungsdatum: 11.02.2001
Beiträge: 28

BeitragVerfasst am: 27. Dez 2001 19:49   Titel: Re: Bildschirm löschen

Hallo Wolfgang,

vielen Dank für deine Info's. Die Funktion <system()> gefällt mir als portable Lösung am Besten.

Unter der ncurses-Implementierung gibt es auch einen clear-Befehl. Kann man mit ncurses auch irgendwie den Bildschirm löschen???

Thanks & Best Recards

mastertm <tommy müller>
 
Benutzer-Profile anzeigen Private Nachricht senden

Taurus
Gast





BeitragVerfasst am: 06. Jan 2002 17:27   Titel: Re: Bildschirm löschen

Hi !

Ich würde sagen das für den Systemaufruf eine absolute Pfadangabe vieleicht besser wäre.
Denn was ist wenn dein Programm z.B suid gesetzt ist und ein Bösewicht ändert die PATH - Umgebungsvariable ...
Er ändert seine PATH Variable und schreibt sich ein "übles" Programm das er 'clear' nennt und schon ists vorbei mit
der Systemsicherheit ... Wink
 

mastertm
Gast





BeitragVerfasst am: 07. Jan 2002 0:07   Titel: Re: Bildschirm löschen

Hi "",

ich freue mich über jede Anregung...

Bei Deinem Threat konnte ich leider nicht genau herausfinden, ob du die ncurses- oder die sytem-Implementierung meinst. Ausserdem konnte das Ding mit der Pfadangabe nicht vollständig verarbeiten. Bei der <include> - Anweisung gibts ja die zwei Möglichkeiten - wie funzt das beim Funktionsaufruf ???

Cu mastertm
 

bakunin



Anmeldungsdatum: 16.08.1999
Beiträge: 597
Wohnort: Lorsch (Südhessen)

BeitragVerfasst am: 07. Jan 2002 2:55   Titel: Re: Bildschirm löschen

Hi!

> Ich würde sagen das für den Systemaufruf eine absolute Pfadangabe vieleicht besser wäre.

Ja, das ist besser (also system("/usr/bin/clear")), aber wer schreibt denn suid-Programme?

Cheers,
GNU/Wolfgang
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

Descartes
Gast





BeitragVerfasst am: 07. Jan 2002 3:24   Titel: Re: Bildschirm löschen

Guten Morgen GNU/Wolfgang -- musst du nachher nicht aufstehen oder hast du noch Ferien ??

Gibts eigentlich sowas wie Lint auch für C++ Quellcode ?
Ich habe letztens so beim Surfen LCLint ( http://lclint.cs.virginia.edu/ )
entdeckt und dachte halt ...
 

bakunin



Anmeldungsdatum: 16.08.1999
Beiträge: 597
Wohnort: Lorsch (Südhessen)

BeitragVerfasst am: 07. Jan 2002 3:35   Titel: Re: Bildschirm löschen

Hi Descartes!

> Guten Morgen GNU/Wolfgang -- musst du nachher nicht aufstehen oder hast du noch Ferien ??

Wenn man nicht schlafengeht, muss man nicht aufstehen. Ne, mal ernsthaft: Ich habe noch eine Woche, aber sollte mich langsam mal umgewöhnen. Aber ich will vor dem Schlafengehen noch herausfinden, warum Ruby unter GNU/Hurd falsche Errno-Konstanten liefert. Und dann vielleicht noch, warum das interaktive Ruby (irb) mein $HOME wie eine Datei einlesen will (was unter GNU/Hurd ja funktioniert, nur ist's kein gültiger Ruby-Quellcode)...

> Gibts eigentlich sowas wie Lint auch für C++ Quellcode ?

Ist mir nichts bekannt. Warum sollte jemand sowas auch schreiben? Genau dann, wenn man damit fertig wäre würde es sowiso wieder 'nen neuen C++ Standard geben, der inkompatibel zu allen vorherigen ist.

Cheers,
GNU/Wolfgang
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

mastertm
Gast





BeitragVerfasst am: 07. Jan 2002 11:40   Titel: Re: Bildschirm löschen

Hi-Ho,

ich muss als Newbie nochmal kurz einhaken...

Wann ist denn Suid-Programm ???

Und das Problem mit der Sicherheit ist mir immer noch nicht so klar. Wenn der Source-Code compiliert ist, kann man doch keine weiteren Änderungen am compilierten Programm machen? Wo ist da denn das Problem mit der Sicherheit?

Vielen DAnk für Eure Ausdauer

Cu mastertm
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy