Ni ISO C ni POSIX ofrecen la funcionalidad para determinar el sistema operativo subyacente durante el tiempo de ejecución. Desde el punto de vista teórico, no importa ya que C ofrece envoltorios para las llamadas al sistema más comunes, y desde el punto de vista de la eliminación de detalles, ni siquiera tiene que ser un sistema operativo subyacente.Determine el sistema operativo durante el tiempo de ejecución
Sin embargo, en muchos escenarios del mundo real, ha resultado útil saber más acerca del entorno de host que C está dispuesto a compartir, p. para averiguar dónde almacenar los archivos de configuración o cómo llamar a select()
, entonces:
¿Existe una forma idiomática para que una aplicación escrita en C determine el sistema operativo subyacente durante el tiempo de ejecución?
Al menos, ¿puedo decidir fácilmente entre Linux, Windows, BSD y MacOS?
Mi conjetura actual es verificar la existencia de ciertos archivos/directorios, como C:\
o /
, pero este enfoque parece poco confiable. Quizás consultar una serie de tales fuentes puede ayudar a establecer la noción de "huellas dactilares del sistema operativo", aumentando así la fiabilidad. De todos modos, espero sus sugerencias.
Er, que conoce esta información en tiempo de compilación –
¿Cómo determinar el sistema operativo en tiempo de ejecución * * ayuda que escribe una llamada 'select()' correctamente? –
+1, @David. Al menos para diferencias como Linux vs. Windows vs. Mac OS X, etc. Supongo que una forma de tiempo de ejecución para diferenciar entre las diferentes versiones de cada uno de ellos podría ser lo que el OP está buscando, pero la respuesta a eso sería específica para cada uno sistema operativo, presumiblemente. –