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

Wintersemester 2018/19

parent cdd02550
Branches 2018ws
No related tags found
No related merge requests found
Showing
with 2284 additions and 0 deletions
File added
../common/Retribution_Engine_Screenshot_120807.jpg
\ No newline at end of file
File added
File added
File added
../common/Telefon_t-sinus-700.jpg
\ No newline at end of file
../common/Zeichen_123.pdf
\ No newline at end of file
../common/a380.jpg
\ No newline at end of file
../common/curiosity.jpg
\ No newline at end of file
../common/dsc_8208.jpg
\ No newline at end of file
File added
This diff is collapsed.
../common/herzschrittmacher.jpg
\ No newline at end of file
../common/kompassmodul-an-roboter.jpg
\ No newline at end of file
../common/kompassmodul.jpg
\ No newline at end of file
../common/logo-hochschule-bochum-cvh-text-v2.pdf
\ No newline at end of file
../common/logo-hochschule-bochum.pdf
\ No newline at end of file
#include <sys/wait.h>
#include <stdio.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 ("BRAINS! ");
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
}
../common/motherboard-anschluesse.jpg
\ No newline at end of file
#include <sys/wait.h>
#include <stdio.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 ("BRAINS! ");
sleep(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
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment