Sie können einfach die Funktion verwenden:
int uname(struct utsname *buf);
indem Sie den Header
einfügen#include <sys/utsname.h>
Es gibt bereits den Namen und die Version als Teil der Struktur zurück:
struct utsname
{
char sysname[]; /* Operating system name (e.g., "Linux") */
char nodename[]; /* Name within "some implementation-defined network" */
char release[]; /* OS release (e.g., "2.6.28") */
char version[]; /* OS version */
char machine[]; /* Hardware identifier */
#ifdef _GNU_SOURCE
char domainname[]; /* NIS or YP domain name */
#endif
};
Übersehe ich etwas?
Für neuere Linux-Distributionen können Sie Folgendes verwenden, um die Betriebssysteminformationen abzurufen. Die Ausgabe ist ziemlich standardmäßig und kann mit der folgenden Spezifikation analysiert werden:
https://www.freedesktop.org/software/systemd/man/os-release.html
cat /etc/os-release
Beispielausgaben:
NAME=Fedora
VERSION="27 (Twenty Seven)"
ID=fedora
VERSION_ID=27
PRETTY_NAME="Fedora 27 (Twenty Seven)"
NAME="Ubuntu"
VERSION="16.04.4 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.4 LTS"
VERSION_ID="16.04"
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
ID_LIKE=archlinux
ANSI_COLOR="0;36"