1

我需要检查我所在的平台,意思是:处理器、操作系统和操作系统版本。我目前的一个例子是i686-apple-darwin10. 如何在 Linux 和 Windows 上获得类似的字符串?我知道自动工具提供了一个产生该字符串的检测脚本,但我现在不记得它的名字了,而且因为它是在 bash 中的,所以它不能在 Windows 上工作。

一个相关的问题是:我从来没有真正了解检测平台的技术。有这方面的标准吗?uname比如“i686-apple - darwin10”就是其中之一,而且我还看到了-style uname -p:“Linux-i386”。每个平台字符串的最佳实践、标准字符串和首选上下文是什么?

4

6 回答 6

3

在 GNU/Linux 系统上,您可能需要uname和的组合lsb_release

下面是你可以得到的uname

$ unname --帮助
用法: uname [选项] ...
打印某些系统信息。没有 OPTION,与 -s 相同。

  -a, --all 按以下顺序打印所有信息,
                             如果未知,则省略 -p 和 -i 除外:
  -s, --kernel-name 打印内核名称
  -n, --nodename 打印网络节点主机名
  -r, --kernel-release 打印内核版本
  -v, --kernel-version 打印内核版本
  -m, --machine 打印机器硬件名称
  -p, --processor 打印处理器类型或“未知”
  -i, --hardware-platform 打印硬件平台或“未知”
  -o, --operating-system 打印操作系统
      --help 显示此帮助并退出
      --version 输出版本信息并退出

现在有了lsb_release

$ lsb_release --帮助
用法:lsb_release [选项]

选项:
  -h, --help 显示此帮助信息并退出
  -v, --version 显示本系统支持的 LSB 模块
  -i, --id 显示分销商 ID
  -d, --description 显示此分布的描述
  -r, --release 显示此发行版的发行号
  -c, --codename 显示此发行版的代码名称
  -a, --all 显示以上所有信息
  -s, --short 以短格式显示请求的信息
于 2009-09-18T21:01:11.633 回答
2

作为起点,您需要指定您希望此检测使用的语言。

如果您指定“我想要一个可以在任何计算机上运行并识别它的单个程序”,那么忘记它 - 这是行不通的。任何程序文件都不能在任何计算机上运行——更不用说识别它了。一种选择是“使用系统上已知的程序”,但没有一个这样的程序是普遍可用的。

写。编程语言,您可以在“脚本”和“编译”之间进行选择(可能介于两者之间的“字节码编译”)。在脚本语言中,您需要选择一个解释器已经在系统上,或者您可以接受用户在运行脚本之前先安装解释器的位置。这就是为什么 Unix shell 脚本被广泛用于系统识别的原因。当然,它们仅限于提供/bin/sh.

对于编译语言,您可以在编译时和运行时系统识别之间进行选择。编译时间在 C 中确实很常见,各种编译器都有预定义的宏,您可以使用这些宏来识别编译器、操作系统或微处理器。

对于运行时,您需要拥有可以使用的系统调用/库函数。您可以使用哪些取决于编程语言。

于 2009-09-18T20:50:55.567 回答
1

没有标准的跨平台方法可以做到这一点,也没有“标准”字符串。

Linux/UNIX 上的 uname 可以为您提供一些信息,但通常仅有关正在运行的内核而不是有关平台(当您谈论 Linux 时,“操作系统版本”是什么意思?内核版本?操作系统版本,例如 RHEL 5.3? )。Windows 您可以询问 WMI,但没有命令行可以为您提供信息。

于 2009-09-18T20:48:24.793 回答
1

如果python系统上存在(适用于所有主要平台),则:

import platform
print platform.platform()

输出:

Linux-2.6.28-15-generic-i686-with-Ubuntu-9.04-jaunty

于 2009-09-18T21:13:51.947 回答
0

我只能为 Linux 和 Windows 提供帮助。我不知道其他操作系统,但可能 *nixes 与 Linux 相同。

版本:Windows:ver,Linux uname -a:。

CPU:在 Linux 中使用 /proc/cpuinfo 文件,Windows 检查寄存器(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\ 搜索 Class=Processor 的那个)

于 2009-09-18T20:57:45.283 回答
-1

在静默模式下运行 dxdiag 将为您提供有关 Windows 的各种信息。

dxdiag /x outfile.xml

等待 .xml 文件的存在。各种信息。

于 2009-09-18T20:49:27.613 回答