Manuel Bouyer a écrit :
On Tue, Apr 15, 2008 at 10:29:35PM +0200, Manuel Bouyer wrote:Hum. When you says it always returns 0, do you mean the integer returned by the function, or the sigset_t passed as pointer ? Reading the man page it seems OK for the function to always return 0.It seems I couldn't get sigpending() working either :(
I was tired when I have written this mail. Of course, on NetBSD, sigpending always returns 0. On Solaris and Linux, it can returns -1. Thus, I have written :
if (sigpending(&set) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; } else if (sigismember(&set, SIGSTART) == 0) { while(sigismember(&set, SIGSTART) == 0) { if (sigpending(&set) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; } nanosleep(&attente, NULL); } }and 'set' is not modified by sigpending even if I send a blocked signal to my process.
Regards, JKB