Systemspezifisches (Linux-) programmieren in C++?



  • Hallo C/C++ Community!

    Mein einstig in C++ fande ich unter Windows. Ich habe mich (so denke ich) ganz gut in die Materie eingearbeitet. Von Elementaren Datentypen bis zu Containern habe ich glaube ich alles gemacht. Nun bin ich seit nen paar Monaten auf Linux umgestiegen (es ist mir richtig ans herz gewachsen 😉 ). Nun möchte ich mich mal der C++ programmierung unter Linux widmen. Ich habe mich schon ein bisschen mit make und g++/gcc eingarbeitet. Um jedoch nen guten Einstieg zu bekommen, habe ich mir dieses Buch ausgesucht:
    http://www.c-plusplus.net/cms/modules.php?op=modload&name=mbBooks&file=index&func=isbn&isbn=3898425703
    Nur da gibt es noch ein Problem: Es wird ja C-Inhalt vermittelt. Denn der Kernel und alles mögliche andere sind ja in C geschrieben. Ich programmiere jedoch C++. Wenn ich also das anwedende, was ich in dem Buch gelernt habe kommt ja ann C und C++ mix raus. Aber komme ich unter Linux überhaupt drum herum in C++ "reines" C zu verwenden? Mir scheint es nicht so. Und nur deswegen nur in C zu programmieren fande ich schade. Denn Klassen und ähnliches werde ich schon vermissen. Was sind also eure Erfahrungen? Habt ihr gleiche Probleme bzw. ist es gar kein Probelem sondern Fakt, dass diese Beiden Sprachen "gemsicht" unter Linux gemischt werden. Und kann man das Buch auch empfehlen bzw. einem C++ Programmierer zusprechen?

    Ich hoffe ihr könnt mir weiterhelfen!



  • Du bist ja nur bei den Systemaufrufen an C Stil gebunden. In deinem Programm kannst du ja C++ nach belieben verwenden. zB die C APIs nach C++ Stil wrappen.



  • Danke für die schnelle Antwort!

    Meinst du das mit dem Wrappen, dass ich an geeigneten Stellen z.b. anstatt

    #include <stdlib.h>
    
    #include <cstdlib>
    

    benutzen sollte?
    Diese Headerdateien sind doch extra für C++ geschrieben worden. (Eigentlich werden da die "alten" Headerdateien doch nur mit extern "C" eingebunden oder?)

    Mfg Linuxpower



  • (Eigentlich werden da die "alten" Headerdateien doch nur mit extern "C" eingebunden oder?)

    Ne, gibt schon einige kleine Unterschiede zB. wird Funktionsüberladung benutzt bei funktionen wie sqrt

    und die Elemente sind im Namespace std eingeschlossen.



  • Linuxpower schrieb:

    Danke für die schnelle Antwort!

    Meinst du das mit dem Wrappen, dass ich an geeigneten Stellen z.b. anstatt

    #include <stdlib.h>
    
    #include <cstdlib>
    

    benutzen sollte?
    Diese Headerdateien sind doch extra für C++ geschrieben worden. (Eigentlich werden da die "alten" Headerdateien doch nur mit extern "C" eingebunden oder?)

    Mfg Linuxpower

    Ja genau. Du kannst weiterhin C++ benutzen, du kennst sicherlich KDE. KDE ist ein vollstädniges C++ Programm, da QT benutzt wird und QT auch in C++ geschrieben ist.

    Die Systemprgrammierung ist auch in C und die Funktionen von der Standardlibrary auch in C aber das spielt ja keine Rolle, weil sie als lib***.so liegen und somit auch von C++ Programme benutzt werden können.



  • Na wenn das so ist. Dann steht dem ja nichts mehr im wege. Ich werde mir das Buch mal vornehmen und Linux erkunden.

    Thx für die Antworten!

    Mfg Linuxpower



  • windows Systemcalls sind auch (noch) in C ... wie hasst es da gemacht ? 😃

    Ciao ...



  • Naja die WinAPI habe ich eben so genommen wie sie war. Ich hab schon gemerkt, dass die in C geschrieben ist. Nur es hat mich nicht so sehr gestört. Nur unter Linux dachte ich, ist das etwas anderes, weil ihr ja wirklich sehr viel in C geschrieben ist.
    Wo ich mir das Inhaltsverzeichnis nochmal angucke (http://www.galileocomputing.de/katalog/buecher/inhaltsverzeichnis/gp/titelID-877?GalileoSession=24837990A2JC.wNav7s)
    wird mir das Topic nochmal bewusst: Da sind nämlich die C-Funktionen beschrieben, mit denen man Dateien öffnet etc. Nur in C++ gibts die abgeleitete Klasse fstream. Mit der kann ich ja auch das alles machen, was da beschrieben ist. Also wäre das doch wieder nen Punkt, den ich quasi überspringen könnte, denn hier gibt es ja in C++ äquivalente Funktionen, die ich verwenden kann. Ich würde jetzt also nach der Regel gehen, wenn es etwas auch in C++ gibt, neheme ich lieber das.

    Mfg Linuxpower



  • Die C++ fstreams sind aber auf einer ziemlich hohen Ebene, mit eigenem Buffer etc.

    In einem Buch über Linux/Unix Systemprogrammierung wird dir vermutlich die Lowlevel Kernel API erklärt. Das lohnt sich definitiv zu lesen.


Anmelden zum Antworten