sem_post, manipuladores de sinal e comportamento indefinido

Esse uso desem_post () em um manipulador de sinal confiar em comportamento indefinido?

/* 
 * excerpted from the 2017-09-15 Linux man page for sem_wait(3)
 * http://man7.org/linux/man-pages/man3/sem_wait.3.html
 */
...
sem_t sem;
...
static void
handler(int sig)
{
    write(STDOUT_FILENO, "sem_post() from handler\n", 24);
    if (sem_post(&sem) == -1) {
        write(STDERR_FILENO, "sem_post() failed\n", 18);
        _exit(EXIT_FAILURE);
    }
}

O semáforosem tem duração de armazenamento estático. Enquanto a chamada parasem_post() é seguro para sinal assíncrono, oTratamento POSIX.1-2008 de ações de sinal parece proibir a referência a esse semáforo:

[O] comportamento é indefinido se o manipulador de sinal se referir a qualquer objeto que não sejaerrno com duração de armazenamento estático que não seja atribuindo um valor a um objeto declarado comovolátil sig_atomic_t, ou se o manipulador de sinal chamar qualquer função definida neste padrão que não seja uma das [funções explicitamente assíncronas-seguras para sinal].

questionAnswers(2)

yourAnswerToTheQuestion