Fork-and-Join-Pattern mit fork und wait

Content

In der Vorlesung sind die Systemaufrufe fork und wait vorgestellt worden, mit denen das Fork-and-Join-Pattern umgesetzt werden kann. Folgendes Beispiel zeigt, wie ein einzelner Kindprozess erzeugt wird, der mit einem zufälligen Exit-Code endet und wie der Eltern-Prozess anschließend darauf wartet, dass der Kindprozess beendet ist:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

int main() {
   pid_t child, pid; int stat;

   child = fork();
   if (child == -1) {
      perror("unable to fork"); exit(1);
   }
   if (child == 0) {
      /* child process */
      srand(getpid());
      exit(rand());
   }

   /* parent process */
   pid = wait(&stat);
   if (pid == child) {
      if (WIFEXITED(stat)) {
         printf("exit code of child = %d\n", WEXITSTATUS(stat));
      } else {
         printf("child terminated abnormally\n");
      }
   } else {
      perror("wait");
   }
}

Aufgabe

Passen Sie das Beispiel so an, dass

Hinweise:

Bitte lassen Sie Ihr Programm auf einem der PCs im E.44 laufen und auf keinen Fall auf unseren Servern (Theon, Thales).