#include <sys/types.h> /* Für Type pid_t */
#include <sys/wait.h> /* für wait() */
#include <unistd.h> /* für fork() und exec() */
#include <stdio.h> /*Bibliothek für Ein-/Ausgabe */
#include <stdlib.h> /* Standartbibliothek */
int main(int args, char ** argv) {
pid_t child_pid; /* Pozessnummer des Kindprozsses */
int status; /* Für das Abfragen des Exitstatus des Kindprozesses */
int a = 0; /* Zähler für fork() Aufrufe */
/* Duplizieren des des Prozesses */
child_pid = fork();
/* Verzweigung für die verschiedenen Prozesse */
if (child_pid == -1) {
/* Hier nur bei Fehler von fork() */
perror("Error in the fork");
exit(1);
} else if (child_pid == 0) /* Zweig für den Kindprozess */
{
while (a < 10) {
printf("Ich bin der %i . Childprozess.\n", a);
a++;
}
}
else /* Zweig für den Elternprozess */
{
if (child_pid != wait(&status)) /* Warte auf Exitstatus des Kindprozesses */
{
/* Hier nur bei Fehler beim Beenden des Kindprozess */
perror("A signal occurred before the child exited");
}
}
exit(0);
}