Prozessverwaltung
-
Hallo. Ich bin gerade dabei eine Aufgabe zu bearbeiten, komme jedoch nicht weiter.. Hier die Aufgabenstellung:
Schreiben Sie ein C-Programm-System, in dem der Vaterprozess per Laufschleife drei Prozesse erzeugt die zwanzig mal eine 1 (erster Prozess), eine 2 (zweiter Prozess ) und der dritte Prozess eine 3 ausgibt. Lassen Sie die Kindprozesse bei jedem Schleifendurchgang 1 Millisekunde warten. Der Vaterprozess soll per waitpid() auf das Ende der drei Kindprozesse warten und anschließend eine Endemledung ausgeben. Ändern Sie ihr Programm, in dem Sie nach jeder Zahlausgabe eine Pufferentlerrung von stdout programmieren.
Mein Code sieht bis jetzt so aus:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #define NUM_CHILDREN 3 int main() { int i; int pid[NUM_CHILDREN]; /*Kindprozesse werden erzeugt*/ for (i=0; i< NUM_CHILDREN; i++) { pid[i]=fork(); printf("%i",i); /*Fehlerabfrage*/ if (pid[i]==-1) { printf("%iter Kindprozess nicht erzeugbar!\n", i); return 0; } } /*Vater gibt Endemeldung aus*/ for (i=0; i<NUM_CHILDREN; i++){ waitpid(pid[i], NULL, 0);} printf("Fertig mit dem Programm"); return 0; }
Jedoch schreibt er 8x Fertig mit Programm und immer zwischen 012 ( welche ich mir ausgeben lasse, bei den Kindern ).. wer kann mir ein wenig hilfestellung geben plz
-
Weißt du denn, was fork() ganz genau macht? Sieht nicht danach aus.
-
fork erzeugt eine exakte kopie.. weiss was des ist.. dachte so könnte es klappen.. xD .. was für ne idee hättest du denn?