Betriebssysteme Letschert - Übung 2-3

Aufgabe 3

Unix-Prozesse können im Vordergrund und im Hintergrund abgearbeitet werden. Ein Programm wird typischerweise dadurch im Hintergrund gestartet, dass man es mit dem &-Zeichen aktiviert. Ein Prozess im Hintergrund unterscheidet sich von einem im Vordergrund unter anderem dadurch, dass er nicht mit CRTL-C abgebrochen werden kann.
Das Programm Hallo
#include <iostream>
#include <unistd.h>

using namespace std;

int main() {
  for(;;) {
    cout << "Hallo, ich lebe noch immer!\n";
    sleep(3);
  }
}
kann beispielsweise nur dann mit CRTL-C abgebrochen werden, wenn es im Vordergrund gestartet wurde.
  1. Übersetzen Sie das Programm Hallo und starten Sie es einmal al Vordergrund- und einmal als Hintergrund-Prozess. Bringen Sie beide Prozesse dann dazu zu stoppen.

    Vordergrund: Stoppen mit CRTL-C
    Hintergrund: Stoppen mit kill <pid> oder mit killall Hallo
    Hallo1.cc

  2. Modifizieren Sie das Beispiel derart, dass mit fork ein Subprozess erzeugt wird, der die Endlosschleife ausführt. Der Elternprozess soll nach Erzeugen des Subprozesses in einer Endlosschleife mit 3 Sekunden Pause "Hallo Leute" ausgeben. Lässt sich Ihr modifiziertes Programm mit CRTL-C abbrechen?

    Das Programm lässt sich abbrechen.
    Hallo2.cc

  3. Modifizieren Sie das Beispiel derart, dass mit fork ein Subprozess erzeugt wird, der die Endlosschleife ausführt. Der Elternprozess soll sich nach Erzeugen des Subprozesses sofort beenden. Lässt sich Ihr modifiziertes Programm mit CRTL-C abbrechen?

    Das Programm lässt sich nur mit kill abbrechen.
    Hallo3.cc

  4. Schreiben Sie einen "Dämon", der alle 15 Sekunden die Nachricht ausgibt "Aetsch - ich lebe noch!".