Closed chrisvanberg closed 7 years ago
I don't care
C'est vraiment un bug. En fait le signal de alarm n'est pas pris en charge par sighandler.
A ajouter
signal(SIGALRM, sighandler),
mais ca ne marche pas...
En envoyant un SIG_USR_2 (SIG_RACE_STOP), qui lui est défini dans le code comme pris en charge par sighandler, je n'obtient pas de print du signal (je l'ai ajouté dans func.c)
=> CONCLUSION : sighandler ne marche pas
Après expérimentation un alarm dans le processus serveur ne peut être catché que par le serveur et non les fils. Il faut trouver un moyen de communiquer
#include <signal.h>
#include <stdio.h>
#include <sys/types.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
int got_sig = 0;
pid_t pid;
void signal_r(int sig){
//FORWARD SIGNAL TO CHILD
if(pid != 0){
kill(pid, sig);
}
got_sig = 1;
}
void main(void){
signal(SIGALRM, signal_r);
pid = fork();
if(pid == 0){
/* CHILD */
printf("CHILD SIG RECEIVER\r\n");
printf("got_sig = %d", got_sig);
while(got_sig == 0){
printf("wait...CHILD\r\n");
}
}else{
/* FATHER */
printf("FATHER ALARM SENDER\r\n");
alarm(5);
while(got_sig == 0){
printf("wait...FATHER\r\n", getpid());
}
}
}
est un exemple de solution
Le signal alarm ne doit pas être envoyé aux clients. C'est le signal SIG_STOP_RACE qui doit être envoyé
Le stop race ne peut pas passer du serveur au client sans modification du code, le problème est identique
Le 12 nov. 2016 20:07, "Julien Castiaux" notifications@github.com a écrit :
Le signal alarm ne doit pas être envoyé aux clients. C'est le signal SIG_STOP_RACE qui doit être envoyé
— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/izanagi1995/Projet_C_F1/issues/7#issuecomment-260141651, or mute the thread https://github.com/notifications/unsubscribe-auth/AB51cmxNg7cHnjdnJzhiaH2pVea6S8f5ks5q9g5agaJpZM4KtjDO .
Dans mes test le code était fonctionnel, le SIG_STOP_RACE fonctionnait comme attendu, j'avais uniquement des problèmes au niveau de la shared_memory (qui a été corrigé entre temps) es-tu sur de ce que tu avances ? (il manque effectivement le signal(SIGALARM, sighandler)
)
Le alarm clock: 14 vient de la, un signal non pris en charge
Le 12 nov. 2016 22:08, "Julien Castiaux" notifications@github.com a écrit :
Dans mes test le code était fonctionnel, le SIG_STOP_RACE fonctionnait comme attendu, j'avais uniquement des problèmes au niveau de la shared_memory (qui a été corrigé entre temps) es-tu sur de ce que tu avances ? (il manque effectivement le signal(SIGALARM, sighandler))
— You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub https://github.com/izanagi1995/Projet_C_F1/issues/7#issuecomment-260148467, or mute the thread https://github.com/notifications/unsubscribe-auth/AB51cmdoo3BdHqEcf03zBq83_aWKpkWeks5q9irJgaJpZM4KtjDO .
Pourquoi en sortie de course, le programme imprime ceci :
Alarm clock: 14