rausfinden, welches os verwendet wird



  • Wie kann ich rausfinden welches os verwendet wird

    also

    Win 7
    win vis
    win xp
    win 2000
    Win 7 64
    win vis 64
    win xp 64
    win 2000 64
    ...
    -------------
    Ubuntu
    Fedora
    ....

    --------
    Mac os
    ....
    -------
    ....


  • Mod

    Zur Laufzeit oder zur Compilezeit? Und wie genau willst du es wissen? Ubuntu und Fedora auseinanderzuhalten dürfte ganz schön schwierig werden, da es nur unterschiedliche Geschmacksrichtungen des gleichen Betriebssystems sind.



  • Zur Compilezeit (da kann man natürlich z.B. nicht zwischen verschiedenen Windows-Versionen unterscheiden) geht es normalerweise mit den Makros, die hier angegeben sind:

    http://sourceforge.net/apps/mediawiki/predef/index.php?title=Operating_Systems

    Zur Laufzeit musst du dann wohl auf die entsprechenden Betriebssystemfunktionen der zur Compilezeit herausgefundenen "Betriebssystemgruppe" zurückgreifen.

    Oder du holst dir eine Library, die diese Funktion schon implementiert hat...



  • ok, danke, ich hab mal was gefunden das ifdef win_32 heisst, wsa bedeutet das?
    d



  • Ich glaub du meinst "_WIN32", und diese steht in der oben geposteten Liste, dass es für Windows 32-Bit und 64-Bit Umgebungen definiert ist.

    [Edit]Aber wie wie oben schon erwähnt, kannst du dies _nur_ zur Compile-Zeit ermitteln[/Edit]

    MfG Marco



  • Hallo,

    Um zur Laufzeit die Windows Version zu ermitteln könnte das hier helfen.
    http://www.codeguru.com/cpp/w-p/system/systeminformation/article.php/c8973__1/Determine-Windows-Version-and-Edition.htm



  • Also wenn man etwas zur Compilezeit hat, hat man es doch erst recht zur Laufzeit... das Problem ist wenn überhaupt die fehlende Präzision. [/pingelig]



  • uname -a



  • knivil schrieb:

    uname -a

    $ uname -a
    Linux desktop_franz 3.2.6-gentoo #1 SMP Wed Feb 15 21:41:26 CET 2012 x86_64 Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz GenuineIntel GNU/Linux
    

    Und wenn man im Makefile die EXTRAVERSION ändert, gibt uname -a gar keinen Hinweis mehr darauf, dass hier Gentoo am Laufen ist.

    Einige Hinweise, wie man unter Linux an genauere Informationen kommt liefert der Thread hier:
    http://www.cyberciti.biz/faq/find-linux-distribution-name-version-number/



  • cat /etc/*-release
    Arch Linux release
    DISTRIB_ID=archlinux
    DISTRIB_RELEASE=rolling
    DISTRIB_DESCRIPTION="Arch Linux"
    


  • Unter Debian:

    $ cat /etc/*-release
    cat: /etc/*-release: Datei oder Verzeichnis nicht gefunden
    

    Ups.

    Ich denke, die beste Vorgehensweise hängt hier davon ab, was alterbro eigentlich mit der Information vorhat. Was hast du eigentlich mit der Information vor, alterbro?



  • SeppJ schrieb:

    Zur Laufzeit oder zur Compilezeit? Und wie genau willst du es wissen? Ubuntu und Fedora auseinanderzuhalten dürfte ganz schön schwierig werden, da es nur unterschiedliche Geschmacksrichtungen des gleichen Betriebssystems sind.

    Neben der Datei /etc/issue gibt es weitere Möglichkeiten, die Versionsnummer der Distribution herauszufinden.
    Die Versionsnummer der Distribution ist bei vielen Linux Distributionen in einer Textdatei in /etc abgelegt.
    Sie trägt den Namen Distributor-release oder Distributor_version

    In neueren - LSB konformen - Distributionen sind diese Daten in die Datei /etc/lsb-release gewandert.
    Insofern ist es bei einer LSB konformen Distri sehr einfach, die Daten herauszufinden.



  • seldon schrieb:

    Unter Debian:

    $ cat /etc/*-release
    cat: /etc/*-release: Datei oder Verzeichnis nicht gefunden
    

    Ups.

    Ich denke, die beste Vorgehensweise hängt hier davon ab, was alterbro eigentlich mit der Information vorhat. Was hast du eigentlich mit der Information vor, alterbro?

    Oh, unter Debian scheint die Datei /etc/debian_version zu heißen.



  • Wieso sollte man Linux-Distrubtionen auseinander halten wollen?



  • Keine Ahnung 😃 Man sollte lieber die vorhandenen Pakete prüfen



  • pyhax schrieb:

    Keine Ahnung 😃 Man sollte lieber die vorhandenen Pakete prüfen

    Wunderbar. Und welches Paketsystem möchtest du abfragen? Es gibt ja nur so "ein paar" Paketverwaltungssysteme. Und fast jede Distribution konfiguriert die anders oder schraubt anderweitig dran rum.

    Um zu wissen, welche Pakete es gibt, musst du erst mal die Distribution kennen.



  • otze schrieb:

    pyhax schrieb:

    Keine Ahnung 😃 Man sollte lieber die vorhandenen Pakete prüfen

    Wunderbar. Und welches Paketsystem möchtest du abfragen? Es gibt ja nur so "ein paar" Paketverwaltungssysteme. Und fast jede Distribution konfiguriert die anders oder schraubt anderweitig dran rum.

    Um zu wissen, welche Pakete es gibt, musst du erst mal die Distribution kennen.

    Es interessiert ja nicht ob das Paket A oder B heisst, sondern es geht darum: ist das binary XYZ in mindestens dieser Version vorhanden? Ist die .so Datei FooBar in mindestens der Version Z vorhanden?



  • Aber dafür musst du sie erst mal finden können. Bei Pfaden sind die Distributionen allerdings noch kreativer als bei Paketsystemen.



  • Wie kann ich rausfinden welches os verwendet wird

    Was moechtest du mit dieser Information machen, wozu dient sie?



  • otze schrieb:

    Aber dafür musst du sie erst mal finden können. Bei Pfaden sind die Distributionen allerdings noch kreativer als bei Paketsystemen.

    Nein, die Dateien liegen alle in den Suchpfaden.
    Mit ´which foobar´ bekomme ich den Pfad zu foobar. Wenn foobar nicht im $PATH liegt, dann ist es nicht korrekt installiert.
    Und .so Dateien liegen in einem der Pfade von $LD_LIBRARY_PATH sonst sind sie nicht korrekt installiert.

    Wenn meine Anwendung so alle Sachen checkt, dann kann man viel mehr Plattformen Supporten als wenn man die Distributionsversion checkt. Feature-Tests sind immer besser als Versions-Tests.

    Der Grund warum es manchmal sinnvoll ist auch eine Distribution zu testen ist der, dass man offiziell nur diese oder jene Distribution supportet. Aber wenn man überall laufen will, einfach testen ob die passende Software vorhanden ist.

    Dann kann man auch leicht dem User sagen was fehlt. Und die ganzen Forks von Distributionen kann man eh nie alle checken - das ist zuviel Aufwand.


Anmelden zum Antworten