¿Cómo verificar el valor de errno?

Estoy usando una llamada al sistema y en caso de que falle, necesito hacer cosas diferentes para diferentes errores.

Necesito escribir un código que se vea así:

int res;
res = systemCall();
if (res == -1)
{
    if (errno == ENOMSG)
    {
        doSomething();
    }
    else
    {
        doSomethingElse();
    }
}

Perror no ayuda, porque solo imprime el valor.

En cuanto a strerro, si es lo que necesito, no estoy seguro de cómo usarlo, porqueaquí dice que la cadena real no es la misma que el error. Cita de la página de manual: "(Por ejemplo, si errnum es EINVAL, la descripción devuelta será" Argumento no válido ")".

Estoy usando Linux Llamadas del sistema: msgsend y msgrcv (https://linux.die.net/man/2/msgrcv) No estoy seguro de qué bibliotecas C está preguntando.

Ya veo que no me expliqué bien.

¿Es válida la declaración if (errno == ENOMSG)? ¿Existe tal variable errno? Básicamente mi pregunta es: ¿Qué debería ir en elif declaración para probar el errno?

Respuestas a la pregunta(3)

Su respuesta a la pregunta