Cómo detectar el sistema operativo a través de un programa C

Uno puede averiguar el sistema operativo en el que se ejecuta el programa con la ayuda de la programación en C. Esta información es muy útil para el caso en el que queremos construir un programa independiente de la plataforma. Para encontrar el sistema operativo (Sistema operativo), verificamos la macro definida por el compilador, por ejemplo, Windows con un sistema operativo de 32 bits tiene » _WIN32 » como macro, por lo que si la macro está definida, entonces el sistema en el que estamos trabajando es Windows con 32 bits. sistema operativo de bits. De manera similar, otro sistema operativo tiene una macro diferente definida. La lista de macros para algunos sistemas operativos populares es la siguiente:

No Señor. Sistema operativo Presente de macros notas
1. Windows 32 bits + 64 bits _WIN32 para todos los sistemas operativos Windows
2. Windows 64 bits _WIN64 Solo para ventanas de 64 bits
3. Manzana __MANZANA__ Para todos los sistemas operativos de Apple
4. Manzana __MÁQUINA__ alternativa a lo anterior
5. iOS integrado TARGET_OS_EMBEDDED incluir TargetConditionals.h
6. simulador de iOS  TARGET_IPHONE_SIMULATOR  incluir TargetConditionals.h
7. iPhone TARGET_OS_IPHONE incluir TargetConditionals.h
8. Mac OS TARGET_OS_MAC incluir TargetConditionals.h
9. Android __ANDROIDE__ subconjunto de linux
10 Sistema operativo basado en Unix __unix__
11 linux __linux__ subconjunto de unix
12 basado en POSIX _POSIX_VERSIÓN Ventanas con Cygwin
13 Solaris __sol
14 Experiencia de usuario de HP __hpux
15. BSD BSD todos los sabores de BSD
dieciséis. Libélula BSD __Libélula__
17 FreeBSD __FreeBSD__
18 NetBSD __NetBSD__
19 OpenBSD __OpenBSD__

Nota:

Cabe señalar que las macros son válidas para GNU GCC y G++ y pueden variar para otros compiladores.

A continuación se muestra el programa para detectar en qué SO estamos trabajando:

C

// C program to detect Operating System
  
#include <stdio.h>
  
// Driver Code
int main()
{
  
// Checking for windows OS with
// _WIN32 macro
#ifdef _WIN32
    printf("Hey Geek it seems that"
           "you are working on a Windows OS.\n");
  
// Checking for mac OS with
// __APPLE__ macro
#elif __APPLE__
    printf("Hey Geek it seems that you"
           "are working on a Mac OS.\n");
  
// Checking for linux OS with
// __linux__ macro
#elif __linux__
    printf("Hey Geek it seems that you"
           "are working on a Linux OS.\n");
  
// Checking for iOS embedded OS with
// TARGET_OS_EMBEDDED macro
#elif TARGET_OS_EMBEDDED
    printf("Hey Geek it seems that you"
           "are working on an iOS embedded OS.\n");
  
// Checking for iOS simulator OS with
// TARGET_IPHONE_SIMULATOR macro
#elif TARGET_IPHONE_SIMULATOR
    printf("Hey Geek it seems that you"
           "are working on an iOS simulator OS.\n");
  
// Checking for iPhone OS with
// TARGET_OS_IPHONE macro
#elif TARGET_OS_IPHONE
    printf("Hey Geek it seems that you"
           "are working on an iPhone OS.\n");
  
// Checking for MAC OS with
// TARGET_OS_MAC macro
#elif TARGET_OS_MAC
    printf("Hey Geek it seems that you"
           "are working on a MAC OS.\n");
  
// Checking for Android OS with
// __ANDROID__ macro
#elif__ANDROID__
    printf("Hey Geek it seems that you"
           "are working on an android OS.\n");
  
// Checking for unix OS with
// __unix__ macro
#elif __unix__
    printf("Hey Geek it seems that you"
           "are working on a unix OS.\n");
  
// Checking for POSIX based OS with
// _POSIX_VERSION macro
#elif _POSIX_VERSION
    printf("Hey Geek it seems that you"
           "are working on a POSIX based OS.\n");
  
// Checking for Solaris OS with
// __sun macro
#elif __sun
    printf("Hey Geek it seems that you"
           "are working on a Solaris OS.\n");
  
// Checking for HP UX OS with
// __hpux macro
#elif __hpux
    printf("Hey Geek it seems that you"
           "are working on a HP UX OS.\n");
  
// Checking for BSD OS with
// BSD macro
#elif BSD
    printf("Hey Geek it seems that you"
           "are working on a Solaris OS.\n");
  
// Checking for DragonFly BSD OS with
// __DragonFly__ macro
#elif __DragonFly__
    printf("Hey Geek it seems that you"
           "are working on a DragonFly BSD OS.\n");
  
// Checking for FreeBSD OS with
// __FreeBSD__ macro
#elif __FreeBSD__
    printf("Hey Geek it seems that you"
           "are working on a FreeBSD OS.\n");
  
// Checking for Net BSD OS with
// __NetBSD__ macro
#elif __NetBSD__
    printf("Hey Geek it seems that you"
           "are working on a Net BSD OS.\n");
  
// Checking for Open BSD OS with
// __OpenBSD__ macro
#elif __OpenBSD__
    printf("Hey Geek it seems that you"
           "are working on an Open BSD OS.\n");
  
// If neither of them is present
// then this is printed...
#else
    printf("Sorry, the system are"
           "not listed above.\n");
#endif
    return 0;
}

Producción:
A continuación se muestra la salida del programa anterior en un
Sistema operativo Windows
:

Del mismo modo, se puede averiguar el sistema operativo y establecer el código apropiado para el sistema.

Publicación traducida automáticamente

Artículo escrito por aditya_taparia y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *