#include < signal.h > int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
A chamada de sistema sigprocmask()
estabelece uma máscara de sinais para um processo. A máscara de sinais indica quais sinais estão bloqueados e quais não estão.Pode-se especificar uma das seguintes opções para how: SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK. SIG_BLOCK causa a nova máscara de sinais bloqueados do processo ser igual à união dos sinais atualmente na máscara do processo mais os sinais existentes no conjunto set. SIG_UNBLOCK causa o desbloqueio dos sinais existentes no conjunto set e que estavam bloqueados na máscara de sinais do processo. SIG_SETMASK indica que o conjunto de sinais set constituirá o conjunto dos sinais bloqueados na nova máscara do processo.
Se set não é NULL, o conjunto de sinais atual no processo será influenciado pelo conjunto de sinais apontado por set, de acordo com a opção how.
Se oldset não é NULL, o conjunto de sinais atual no processo, antes das mudanças, será copiado para a localização de memória apontada por oldset.
Veja o Experimento #4 para maiores informações sobre a chamada sigprocmask e sinais no geral.
Para ter o sinal SIGUSR1 bloqueado no processo:
#include < signal.h > ... sigset_t sigset; ... sigemptyset( &sigset ); sigaddset( SIGUSR1 ); ... if( sigprocmask( SIG_BLOCK, &sigset, NULL ) == -1 ) { perror( "sigprocmask" ); }
sigaddset sigdelset sigemptyset sigfillset sigaction.html sigqueue.html sigsuspend
AIX, Linux, Lynx, SunOS e Solaris
Para maiores informações sobre este comando, consulte a página do manual de seu sistema operacional (comando man).