Prozesse: Vater wartet 1 sekunde auf Kind und killed es dann.

Lateralus

Active Member
Ich habe ein kleines Problem in C

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:
#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;

}
 
Zurück
Oben