001
01.01.2003, 13:57 Uhr
~babysitter
Gast
|
Ok, man hat mir geholfen. Die Lösung ist zimlich einfach gewesen, wenn man es weiß :-) Das Listing unten startet 5 Prozesse , der Vaterprozess wartet bis die Kinder fertig sind und "stirbt" dann. Vileicht braucht es noch jemand .
/* 5 Prozesse mit fork() */
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h>
int main(void) { pid_t pid[5]; int i;
for (i = 0; i < 5; i++) if (!(pid[i] = fork())) break;
if (i == 5) { /* Vater prozess */ /* * Wartet bis Kinder fertig */ for (i = 0; i < 5; i++) waitpid(pid[i], NULL, 0);
/* * Schreibt Ihre Pid-s */ printf("Ich bin Vater (pid = %u) mit 5 Kinder:\n", getpid()); for (i = 0; i < 5; i++) printf("pid[%u] = %u\n", i, pid[i]);
exit(0); }
/* * Das tut nur Kind-Prozess */ printf("Ich bin Kind(pid = %u), und mein Vater ist (pid = %u)\n", getpid(), getppid());
exit(0); } |