Este problema definitivamente no se debe al reinicio de la NVRAM, así que no te preocupes por eso.
Básicamente estás tomando un programa (main.c) y compilándolo en tu Mac con el compilador clang suministrado por Apple para crear el main
ejecutable. Aquí es donde aparecen las advertencias de desaprobación, que en sí mismas no suelen indicar un problema como tal con el programa - sólo que si este fuera un programa "real" (y no una demostración educativa) querrías usar una alternativa para sem_init()
.
La salida de este programa ahora difiere bastante de la salida del mismo programa ejecutado en Ubuntu o en repl.it, que es esencialmente una especie de interfaz remota a una máquina Ubuntu.
Puedo confirmar que obtengo la misma salida que tú en el Mac, y que difiere bastante de la salida en Ubuntu, ya que no se adhiere a la anchura de 11 elementos de la tabla emitida. Así que este problema no es específico de tu Mac.
La razón por la que el programa difiere es que la implementación de las funciones de semáforo en MacOS difiere de la implementación de Ubuntu. Normalmente esto indicaría que hay un error en tu programa main.c.
El error es que el código no comprueba el valor de retorno de la función sem_init() en la función main(). Si se comprobara el valor de retorno, se vería que devuelve -1, lo que significa que se ha producido un error. No tiene sentido continuar después de que se produzca el error, ya que esto significa que esencialmente cada operación siguiente en ese semáforo fallará.
La razón por la que el código falla es que estás intentando crear un semáforo sin nombre, que no está soportado en MacOS. Podrías arreglar el programa en MacOS sustituyendo las llamadas a sem_init()
con llamadas a sem_open()
. Nótese que este último devuelve un puntero al semáforo en lugar de tenerlo como parámetro de salida.