Pthread et kill(SIGINT) >> un sleep qui "saute"
Quel probleme peut se cacher derriere un sujet aussi étrange arf !
Bon voila un bout de code:
Code:
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
| while(1){
priorite=rand()%10; //priorités de 0 a 9
tpsExec=rand()%15 + 5; //tps d'execution de 5 a 19
dateS=1111;//date de soumission fixe pour le moment
sprintf(tpsExecChar, "%i",tpsExec);//conversion en char
switch(pid=fork()){
case -1:
perror("Erreur creation processus");
break;
case 0: //dans le fils
if (execl("./proc","proc",tpsExecChar,NULL)!=0)perror("lancement processus");
break;
default://dans le pere
//ajout du processus a la table
pthread_mutex_lock (&mutex);
Add(&tabProc,pid, priorite, dateS);
pthread_mutex_unlock (&mutex);
//printf("ajoutEffectue\n");
break;
}
//printf("Processus lancé ! pid : %d | priorite : %d | dateS : %d\n",pid,priorite,dateS);
if(kill(pid,SIGINT)==-1){
printf("erreur envoi du signal\n");
}else{
printf("signal bien envoyé\n");
}
sleep(5);
} |
Ceci est un bout de code d'un thread qui est sensé creer des processus toutes les 5 secondes et placer certaines infos concernant les processus dans une liste chainee.
Les processus créés on un handler pour le SIGINT :
Code:
1 2 3 4
| void handlerSIGINT(int sig){
printf("Processus %d : arret\n",monPid);
exit(0);
} |
Le souci est que au apres que le premier SIGINT soit lancé, c'est comme si le sleep était court-circuité, on a ensuite une création de processus tres rapide et le lancement des signaux a la meme vitesse
Je voi pas du tout quel peut être le probleme...