Ich möchte ein Programm schreiben, dass 1. forked() 2. der Elternprozess eine bestimmte Zeitlang wartet, und dann das Kind killed, aber nur wenn es sich nicht selbst bereits beendet hat. Wenn das Kind sich schon beendet hat, soll der Elternprozess weiterlaufen. (Das folgende Programm erfüllt die Aufgabe also nicht.)
Code: Select all
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
int main()
{
pid_t pid;
if( (pid=fork()) == 0){
while(1){
if( (rand()) < (RAND_MAX/1000)*999 )
printf("Ich bin das Kind, ich spiele!\n");
else{
printf("Aber vielleicht beende ich mich auch!\n");
exit(0);
}
}
}
if( pid > 0){
sleep(1);
kill(pid, SIGQUIT);
}
if( pid < 0){
fprintf(stderr, "fork() fuehrte zu einem Fehler!\n");
exit(1);
}
return 0;
}