sub-rotina sigthreadmask
Propósito
Configura a máscara de sinal de um fio.
Biblioteca
Biblioteca de encadeamentos (libpthreads.a)
Sintaxe
Descrição
A subroutine sigthreadmask é usada para examinar ou alterar a máscara de sinal do fio de chamada. A subroutina sigprocmask não deve ser usada em um processo multi-encadeado.
Geralmente, a subroutina sigthreadmask (SIG_BLOCK) é usada para bloquear sinais durante uma seção crítica de código. A subroutine sigthreadmask (SIG_SETMASK) é então usada para restaurar a máscara para o valor anterior devolvido pelo subroutine sigthreadmask (SIG_BLOCK) .
Se houver quaisquer sinais não bloqueados pendentes após a chamada para a subroutine sigthreadmask , pelo menos um desses sinais será entregue antes que o subroutine sigthreadmask retorna.
A subroutine sigthreadmask não permite que o sinal SIGKILL ou SIGSTOP seja bloqueado. Se um programa tentar bloquear qualquer sinal, a subroutine sigthreadmask não dá nenhuma indicação sobre o erro.
Parâmetros
| Item | Descrição |
|---|---|
| como | Indica a maneira como o conjunto é alterado. Pode ter um dos valores a seguir:
|
| configurar | Especifica o conjunto de sinal. Se o valor do parâmetro Set não for nulo, ele aponta para um conjunto de sinais a serem usados para alterar o conjunto atualmente bloqueado. Se o valor do parâmetro Set for nulo, o valor do parâmetro How não é significativo e a máscara de sinal do processo fica inalterada. Assim, a chamada pode ser usada para indagar sobre sinais bloqueados atualmente. |
| conjunto_antigo | Se o parâmetro old_set não for o valor nulo, a máscara de sinal em vigor no momento da chamada será armazenada no espaçamento apontado pelo parâmetro old_set . |
Valores De Retorno
Após a conclusão, um valor de 0 é devolvido. Se a sub-rotina sigthreadmask falhar, a máscara de sinal do processo permanecerá inalterada, um valor de -1 será retornado e a variável global errno será definida para indicar o erro.
Códigos De Erro
A subroutine sigthreadmask não é bem-sucedida se o seguinte for verdadeiro:
| Item | Descrição |
|---|---|
| EFAULT | Os ponteiros set ou old_set não estão no espaço de endereço do processo. |
| EINVAL | O valor do parâmetro como não é suportado. |
| EPERM | O encadeamento de chamada não tem o privilégio de alterar a máscara do sinal. |
Exemplos
Para configurar a máscara de sinal para bloquear apenas o sinal SIGINT da entrega, digite:
#include <pthread.h>
#include <signal.h>
int return_value;
sigset_t newset;
sigset_t *newset_p;
. . .
newset_p = &newset;
sigemptyset(newset_p);
sigaddset(newset_p, SIGINT);
return_value = sigthreadmask(SIG_SETMASK, newset_p, NULL);