000
11.05.2008, 18:23 Uhr
Lucifero
|
Hallo, Ich fange gerade an C zu programmieren und habe in folgendem Code wohl einige Fehler gemacht. Das Programm soll in einer Endlosschleife laufen, der Vaterprozess soll die id des Kindprozesses ausgeben und Zombies wegräumen und auch ausgeben welche ID diese hatten.
Bei dem Programm wird ein Timer gestartet, allerdings nach soll nachdem der Kindprozess fertig ist wieder die Eingabezeile für die Zeitdauer erscheinen.
Außerdem soll nach der Eingabe von Buchstaben abgebrochen und es soll erneut die Eingabezeile aufgerufen werden.
Ob die Zombievernichtung schon funktioniert konnte ich noch nicht ausprobieren.
Code: |
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/wait.h> #include <sys/types.h>
void Wecker(){ int dauer; printf("Bitte Zeitdauer in Sekunden eingeben> "); if(scanf("%d",&dauer)<1){ printf("Bitte eine positive ganze Zahl eingeben!\n"); Wecker(); } int status; pid_t kind; kind = fork(); switch(kind){ case -1: perror("kind"); exit(EXIT_FAILURE); case 0: sleep(dauer); printf("\nRingRing! von dem Wecker mit ID %d:\n", getpid()); exit(EXIT_SUCCESS); default:printf("Wecker mit ID %d: gestartet\n", kind); while((kind = waitpid(-1,&status,WNOHANG))>0){ if(kind == -1){ printf("\nKindzombie mit ID: %d ist weggeräumt worden\n", kind); } } Wecker(); } }
|
Vielen dank im vorraus :D Dieser Post wurde am 11.05.2008 um 18:49 Uhr von Lucifero editiert. |