Bonjour c'est la première fois je poste un message ici et je vais surement faire des fautes d'orthographes
Comme dit dans le titre j'ai un exercice dont le but est de creer un processus fils et de lui faire envoyer 200 signals SIGUSR1 a son pere, celui ci doit compter le nombre de signaux reçu et afficher le nombre à la fin :
voici mon code
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
#include<signal.h>
#include<sys/wait.h>
#include<sys/types.h>
 
int compteur=0;
 
void handler(int num_signal)
{
	compteur ++;
	printf("Signal reçu : %d\nEnvoi Accusé Reception\n",compteur);	
}
void handler2(int num_signal)
{
	printf("Accusé Reception reçu\n");
}
 
int main()
{
	pid_t pid;
	int status,i=1;
	printf("\t Debut \n");
 
	if((pid=fork())==-1){return EXIT_FAILURE;}
	if(pid==0)
	{
		signal(SIGUSR1,handler2);
		printf("Dans le fils \n");
		sleep(3);
		printf("\t\tDebut envoie des 200 signal SIGUSR1\n");
		for(i=1;i<201;i++)
		{
			kill(getppid(),10);
			pause();
			sleep(0.3);
		}
		exit(56);
	}
	else 
	{	
		signal(SIGUSR1,handler);
		while(compteur<200)
		{
			pause();
			kill(pid,10);
			sleep(0.3);
		}
		wait(&status);
		if (WIFEXITED (status))
		{
			printf("Fils termine normalement : status = %d\n",WEXITSTATUS(status));	
		}
		else {printf("Fils terminé anormalement \n");}
	}
	return 0;	
}
Et mon probleme c'est que ce code 3 fois sur 5 il marche et des fois le compteur s'arrete a 50 , 120 ou des valeurs inconnus sans raison
Merci pour vos reponses