Bonjour,
Je code un programme dans lequel a un moment j'utilise un recv de cet facon :
message mes;
if( recv(desc, &mes, sizeof(mes), 0) == -1){
fprintf(stdout, "Erreur recv()!\n");
perror("recv ");
exit(EXIT_FAILURE);
}
Or j'utilise le signal SIGUSR2 pour demander quelque chose a mon processus, le meme qui est en attente de recevoir avec recv() .
Voila mon signal :
struct sigaction action2 = {
.sa_handler = gestion_signal_SIGUSR2,
.sa_flags = 0
};
sigfillset(&(action2.sa_mask));
if(sigaction(SIGUSR2, &action2, NULL) == -1) {
fprintf(stderr, "Erreur sigaction() !\n");
perror("sigaction ");
exit(EXIT_FAILURE);
}
Voila. Et donc mon probleme c'est que a un moment je fais un kill(pid, SIGUSR2) qui envoi un signal SIGUSR2 a mon pid, et donc provoque une erreur de la fonction recv() en cours :
Erreur recv() !
recv : Interrupted system call
Comment faire pour que mon processus, qui est en attente sur le recv(), recoive le signal SIGUSR2, fasse ce que jlui demande avec ce signal (ça c'est bon), mais revienne aprés sur le recv() sans faire d'erreur ??
J'espere avoir été le plus claire possible
Merci si vous pouvez m'aider
Cdt
Tom
Partager