sem_post, manejadores de señal y comportamiento indefinido

¿Este uso desem_post () en un controlador de señal confía en un comportamiento 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);
    }
}

El semáforosem tiene duración de almacenamiento estático. Mientras la llamada asem_post() es asíncrono seguro para la señal, elPOSIX.1-2008 tratamiento de acciones de señal parece no permitir hacer referencia a ese semáforo en sí:

[E] l comportamiento no está definido si el controlador de señal se refiere a cualquier objeto que no seaerrno con una duración de almacenamiento estático que no sea mediante la asignación de un valor a un objeto declarado comovolátil sig_atomic_t, o si el manejador de señal llama a cualquier función definida en este estándar que no sea una de las [funciones explícitamente asíncronas seguras].

Respuestas a la pregunta(2)

Su respuesta a la pregunta