Skip to content
Snippets Groups Projects
Commit 4b85d91c authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Zombies, Beispiel-Netzwerk-Dienst hello, Tafelbild: Routing

parent ab2a5ba6
Branches
No related tags found
No related merge requests found
#include <stdio.h>
int main (void)
{
printf ("Hello, world!\n");
return 0;
}
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
int main(void){
pid_t pids[10]; // Platz für 10 Prozess-IDs (die Kindprozesse)
int i; // Laufvariable
for (i = 0; i < 10; ++i) {
// Der Vaterprozess erzeugt nun einen Kindprozess,
// welcher unabhängig vom Vaterprozess mit der
// erneuten Ausführung des Programms beginnt.
// Ein Kindprozess erzeugt keinen Fork von sich selbst.
pids[i] = fork();
if (pids[i] == 0) {
// dann befinden wir uns in einem der 10 Kindprozesse
// Der erste Kindprozess wartet 10 Sekunden und jeder
// weitere Kindprozess wartet 1 Sekunde kürzer als der
// vorige.
printf ("%d BRAINS! ", i);
sleep(10-i);
exit(0); // Kindprozess erfolgreich beenden
}
}
//
// hier kommt nur der Vaterprozess vorbei
for (i = 0; i < 10; ++i){
// Der Vaterprozess wartet nun, bis der Reihe nach jeder
// seiner 10 Kindprozesse beendet ist. Leider wird auf das
// Kind mit der längsten Wartezeit zuerst gewartet. Obwohl
// die anderen Kinder längst erfolgreich beendet wurden,
// blockiert das erste Kind eine Bereinigung der Prozesstabelle
waitpid(pids[i], NULL, 0);
}
//
// while (1);
return 0; // Vaterprozess erfolgreich beenden
}
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
int main(void){
pid_t pids[10]; // Platz für 10 Prozess-IDs (die Kindprozesse)
int i; // Laufvariable
for (i = 0; i < 10; ++i) {
// Der Vaterprozess erzeugt nun einen Kindprozess,
// welcher unabhängig vom Vaterprozess mit der
// erneuten Ausführung des Programms beginnt.
// Ein Kindprozess erzeugt keinen Fork von sich selbst.
pids[i] = fork();
if (pids[i] == 0) {
// dann befinden wir uns in einem der 10 Kindprozesse
// Der erste Kindprozess wartet 10 Sekunden und jeder
// weitere Kindprozess wartet 1 Sekunde kürzer als der
// vorige.
printf ("%d BRAINS! ", i);
sleep(10-i);
exit(0); // Kindprozess erfolgreich beenden
}
}
//
// // hier kommt nur der Vaterprozess vorbei
// for (i = 0; i < 10; ++i){
// // Der Vaterprozess wartet nun, bis der Reihe nach jeder
// // seiner 10 Kindprozesse beendet ist. Leider wird auf das
// // Kind mit der längsten Wartezeit zuerst gewartet. Obwohl
// // die anderen Kinder längst erfolgreich beendet wurden,
// // blockiert das erste Kind eine Bereinigung der Prozesstabelle
// waitpid(pids[i], NULL, 0);
// }
//
// while (1);
return 0; // Vaterprozess erfolgreich beenden
}
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
int main(void){
pid_t pids[10]; // Platz für 10 Prozess-IDs (die Kindprozesse)
int i; // Laufvariable
for (i = 0; i < 10; ++i) {
// Der Vaterprozess erzeugt nun einen Kindprozess,
// welcher unabhängig vom Vaterprozess mit der
// erneuten Ausführung des Programms beginnt.
// Ein Kindprozess erzeugt keinen Fork von sich selbst.
pids[i] = fork();
if (pids[i] == 0) {
// dann befinden wir uns in einem der 10 Kindprozesse
// Der erste Kindprozess wartet 10 Sekunden und jeder
// weitere Kindprozess wartet 1 Sekunde kürzer als der
// vorige.
printf ("%d BRAINS! ", i);
sleep(10-i);
exit(0); // Kindprozess erfolgreich beenden
}
}
//
// // hier kommt nur der Vaterprozess vorbei
// for (i = 0; i < 10; ++i){
// // Der Vaterprozess wartet nun, bis der Reihe nach jeder
// // seiner 10 Kindprozesse beendet ist. Leider wird auf das
// // Kind mit der längsten Wartezeit zuerst gewartet. Obwohl
// // die anderen Kinder längst erfolgreich beendet wurden,
// // blockiert das erste Kind eine Bereinigung der Prozesstabelle
// waitpid(pids[i], NULL, 0);
// }
//
while (1);
// return 0; // Vaterprozess erfolgreich beenden
}
20161103/photo-20161103-150203.jpg

121 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment