Betriebssystem ermitteln



  • Wie kann ich mit C das Betriebssystem ermitteln, auf dem das Programm läuft?
    Bei Google hab ich nur was für C# und Java gefunden. 😕 😕 😕

    elske



  • Da das Programm sowieso für jedes Betriebssystem neu übersetzt werden muss, kannst du dies mit Präprozessordirektiven unterscheiden.

    #ifdef LINUX
    void machWas()
    {
      // ...
    }
    #elif defined(WIN32)
    void machWas()
    {
      // ...
    }
    #endif
    


  • und die windows-version?



  • Cork_City schrieb:

    und die windows-version?

    #ifdef LINUX
    void machWas()
    {
      // ...
    }
    #elif defined(WIN32)
    void machWas()
    {
      system(systeminfo.exe); // Und dann irgendwie den Output abfangen und auswerten.
      // ...
    }
    #endif
    


  • Unter POSIX-konformen Systemen:

    #include <sys/utsname.h>
    
    /* ... */
    
    struct utsname buf;
    uname(&buf);
    

    siehe ggf. uname(2).

    Unter Windows:

    #include <windows.h>
    
    /* ... */
    
    OSVERSIONINFO buf;
    buf.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    GetVersionEx(&buf);
    

    Siehe dazu auch hier.


Log in to reply