Vorder- und Hintergrundprozess

Ein Vordergrundprozess ist ein Prozess, auf dessen Beendigung die Shell wartet.

Ein Hintergrundprozess läuft parallel zur Shell weiter. Die Shell nimmt währenddessen neue Eingaben entgegen.

Vordergrundprozess

ping tu.berlin

Die Shell ist blockiert, bis ping beendet wird oder abgebrochen wird.

Hintergrundprozess

ping tu.berlin &

Das abschließende & startet den Prozess im Hintergrund.

Umsetzung in einer Shell

Typischer Ablauf:

  1. Shell erzeugt mit fork() einen Kindprozess.
  2. Kindprozess startet mit execvp() das gewünschte Programm.
  3. Elternprozess:
    • wartet bei Vordergrundausführung mit waitpid(pid, NULL, 0)
    • wartet bei Hintergrundausführung nicht sofort