Bonsoir,

Il m'est demandé de créer un programme qui va créer indéfiniment des processus fils grâce à la commande fork() dans un premier temps.
Dans un second temps, stopper ce processus de création grâce a une saisie clavier, puis attendre la fin des fils engendrés !

Mon problème ce situe dans le fait de créer indéfiniment les fils jusqu’à la saisie clavier !

Voici mon bout de code qui ne crée qu'un seul fils !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
int STOP = 1;
 
while (STOP)
{
	sleep(1);
	switch (pid = fork())
	{
		case -1 :
			perror("erreur fork");
			exit(EXIT_FAILURE);
		case 0 :
			while (1)
			{
				fprintf(stdout,"(pid=%d | ppid=%d)\n",getpid(),getppid());
				fflush(stdout);
				sleep(5);
			}
			exit(EXIT_SUCCESS);
		default :
			if (read(STDIN_FILENO,&tmp,1))
			{
				fprintf(stdout,"\n== STOP ==\n");
				STOP = 0;
			}
			break;		
	}
}
Et un autre que je n'arrive pas à stopper !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
int STOP = 1;
 
while (STOP)
{
	sleep(1);
	switch (pid = fork())
	{
		case -1 :
			perror("erreur fork");
			exit(EXIT_FAILURE);
		case 0 :
			while (1)
			{
				fprintf(stdout,"(pid=%d | ppid=%d)\n",getpid(),getppid());
				fflush(stdout);
				sleep(5);
			}
			exit(EXIT_SUCCESS);
		default :
			break;		
	}
}
 
if (read(STDIN_FILENO,&tmp,1))
{
	fprintf(stdout,"\n== STOP ==\n");
	STOP = 0;
}

Où se site le problème ?

Merci d'avance !