GNU/Linux >> Linux の 問題 >  >> Linux

C++ は Linux ディストリビューション名\バージョンを取得します

単純に関数を使用できます:

int uname(struct utsname *buf);

ヘッダーを含めることにより

#include <sys/utsname.h>

構造体の一部として名前とバージョンをすでに返しています:

   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
   };

何か足りないものがありますか?


最近の Linux ディストリビューションでは、以下を使用して OS 情報を取得できます。出力は非常に標準的で、次の仕様を使用して解析できます:

https://www.freedesktop.org/software/systemd/man/os-release.html

cat /etc/os-release

出力例:

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"

Linux
  1. Linuxでディレクトリサイズを取得する方法

  2. Linux ディストリビューション名とバージョンを取得するには?

  3. Linux でインターフェイスの IP アドレスを取得する

  1. C++ を使用して Linux で合計 CPU 使用率を取得する方法

  2. Linux の C/C++ でユーザー名を取得するには?

  3. C++ Linux:モニターのリフレッシュ レートを取得する

  1. LinuxでNetworkManagerを使い始める

  2. C++ Linux でクリップボードから文字列を取得する

  3. Scientific Linux で ldapsearch を取得するには?