Betriebssysteme Letschert - Übung 1-5

Aufgabe 5

Vergleichen Sie die beiden folgenden Programme:
Progr. 1 (C++) ----------------
#include <iostream>
using namespace std;
int main() {
  cout << "Hallo\n";
}
-------------------------------
Progr. 2 (C) ------------------
#include <stdio.h>
int main() {
  printf("Hallo\n");
  return 0;
}
  1. Übersetzen und binden Sie die beiden Programme einmal statisch und einmal dynamisch. Lassen Sie sich von truss bzw. strace ausgeben, welche Systemaufrufe jeweils ebgesetzt werden.

    Prog1 dynamisch
    Prog1 statisch
    Prog2 dynamisch
    Prog2 statisch

  2. Finden Sie heraus, mit welchem Systemaufruf die beiden Programme sich jeweils beim Betriebssystem melden, um den Text "Hallo" auszugeben.

    Bei beiden Programmen ist das der Aufruf
    write(1, "Hallo\n", 6)

  3. Schreiben Sie ein C-Programm, das diesen Systemaufruf direkt absetzt.

    hallo_direkt.c

  4. Kann man auch ein C++-Programm schreiben, das den Systemauf direkt absetzt?

    C++ kann alles, was C kann.

  5. Was ist der Unterschied zwischen den Programmen mit direktem Systemaufruf und den beiden Programmen oben? Was liegt also dort zwischen dem Programm und dem Systemaufruf?

    Zwischen Programm und Systemaufruf liegt die Standardbibliothek. Bei C++ wird ostream::operator << (const char *) aufgerufen, bei C printf(char *, ...).