La norme POSIX introduit les ensembles de signaux:
ces ensembles de signaux permettent de dépasser la contrainte classique qui veut que le nombre de signaux soit inférieur ou égal au nombre de bits des entiers de la machine. D'autre part, des fonctions de manipulation de ces ensembles sont fournies et permettent de définir simplement des masques.
Ces ensembles de signaux sont du type sigset_t et sont manipulables grâce aux fonctions suivantes:
int sigemptyset(sigset_t *ens) /* raz */
int sigfillset(sigset_t *ens) /* ens = { 1,2,...,NSIG} */
int sigaddset(sigset_t *ens, int sig) /* ens = ens + {sig} */
int sigdelset(sigset_t *ens, int sig) /* ens = ens - {sig } */
Ces fonctions retournent -1 en cas d'échec et 0 sinon.
int sigismember(sigset_t *ens, int sig); /* sig appartient à ens ?*/
retourne vrai si le signal appartient à l'ensemble.