Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 17

Thema: c++, system-calls - was sind vor/nachteile?

  1. #1
    Registrierter Benutzer
    Registriert seit
    03.07.2004
    Beiträge
    63

    c++, system-calls - was sind vor/nachteile?

    hi
    ich schreibe gerade an einer programmieruebung (keine angst - keine hausaufgaben oder so - die aufgabe habe ich mir selber gestellt), und da gibt es 2 funktionen die man sehr einfach schreiben kann wenn man system() calls verwendet. jetzt habe ich erst neulich 2 sehr verschiedene meinungen ueber systemcalls gehoert.
    was sind die vor und nachteile von systemcalls? sollte man sie normalerweise moeglichst umgehen, oder ist es in ordnung wenn man sie verwendet?
    gruss
    luh

  2. #2
    Registrierter Benutzer Avatar von dra
    Registriert seit
    02.11.2004
    Ort
    Ulm
    Beiträge
    29
    Hi luh!

    Also der Vorteil von system calls liegt in der Geschwindigkeit. Dieser Vorteil ist aber verschwindend gering, zumal die Bibliotheken in den meisten Fällen nur einen (optimierten) Wrapper dafür bereitstellen.

    Der Nachteil ist auf jeden Fall die Systemabhängigkeit (nicht Plattformabhängigkeit). Wenn du z. B. auf Linux mit der glibc programmierst, dann wird sich dieser Code auch nur auf Linux kompilieren lassen.

    Wenn du also möglichst viele Systeme abdecken möchtest, dann benutz die Bibliotheken, die den jeweiligen Zweck erfüllen.

    Gruß,
    dra
    "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." -- Rich Cook

  3. #3
    Registrierter Benutzer
    Registriert seit
    03.07.2004
    Beiträge
    63
    danke dra
    luh

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    system() benutzt zwar Systemcalls, aber ist selber keiner

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    17.09.2001
    Beiträge
    1.182

    Hmmm..

    Ich glaub da bahnt sich eine Verwechslungstragödie an...

    Ein System-Call ist != einem system(char* str) aufruf ;-)
    Systemcalls benüzen low-level bibliotheken um mit dem Kernel zu kommunizieren, was natürlich nicht über direkte funktionsaufrufe gehen kann.

    Ein call auf die Funktion system() hingegen führt ein anderes programm aus, genau einzelheiten was da genau passiert weiß nur der liebe gott und anda_skoa ;-)
    Geändert von Lin728 (21-08-2017 um 15:22 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    01.03.2004
    Beiträge
    113
    Zitat Zitat von ceisserer
    Ein call auf die Funktion system() hingegen führt ein anderes programm aus, genau einzelheiten was da genau passiert weiß nur der liebe gott und anda_skoa ;-)
    Und die Manualpage zu system(2)...

    Gruß,
    /dev

  7. #7
    Registrierter Benutzer
    Registriert seit
    03.07.2004
    Beiträge
    63
    jetzt habe ich neulich ein system() benutzt, und ein anderer programmierer hat mich dafuer sofort dumm angemacht, und meinte das sei ganz schlechter stil. koennt ihr mir sagen wieso?
    luh

  8. #8
    Registrierter Benutzer
    Registriert seit
    18.03.2005
    Beiträge
    11
    Vielleicht hast du ja über system irgendwelche Komandos ausgegeben, welche nicht systemunabhängig sind?

  9. #9
    Registrierter Benutzer
    Registriert seit
    01.03.2004
    Beiträge
    113
    Es kommt halt darauf an, wozu du system() brauchst. Es gibt sicher sinnvolle Einsatzfälle, jedoch ein ganzes Programm von dieser Funktion abhängig machen oder darauf aufbauen ist in der Tat schlechter Stil. Etwa, um an Prozessinformationen zu kommen, das entsprechende Kommandozeilenprogramm aufzurufen und dessen Ausgabe parsen, statt die Funktionen in <sys/*> zu benutzen.

    Gruß,
    /dev

  10. #10
    Registrierter Benutzer
    Registriert seit
    03.07.2004
    Beiträge
    63
    @t.knopp
    hatte cat und grep benutzt.
    @deever
    das eine interessiert mich. was hast das mit <sys/*> aufsich? kommt man da an prozess informationen?
    luh

  11. #11
    Registrierter Benutzer
    Registriert seit
    01.03.2004
    Beiträge
    113
    Zitat Zitat von luh
    das eine interessiert mich. was hast das mit <sys/*> aufsich? kommt man da an prozess informationen?
    Nun, in der Manualpage zu der entsprechenden Funktion dürfte alles geklärt werden. Oder war deine Frage eher genereller gemeint?

    Gruß,
    /dev

  12. #12
    Registrierter Benutzer
    Registriert seit
    03.07.2004
    Beiträge
    63
    generell
    was sind das ueberhaupt fuer funktionen in dem ordner...
    ich schreibe gerade ein program, dass vielleicht einfacher gewesen waehre mit, aber da ich nicht sicher ist was das ueberhaupt fuer dinger sind wolte ich mal fragen.
    luh

  13. #13
    Registrierter Benutzer
    Registriert seit
    01.03.2004
    Beiträge
    113
    Zitat Zitat von luh
    was sind das ueberhaupt fuer funktionen in dem ordner...
    Code:
    $ grep extern /usr/include/sys


    Gruß,
    /dev

  14. #14
    Registrierter Benutzer
    Registriert seit
    03.07.2004
    Beiträge
    63
    vnh@skapa:~> grep extern /usr/include/sys
    vnh@skapa:~>
    da bekomme ich kein resultat.
    luh

  15. #15
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von luh
    vnh@skapa:~> grep extern /usr/include/sys
    da bekomme ich kein resultat.
    grep extern /usr/include/sys/*

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •