是否有任何C ++ API可用于了解操作系统描述?

时间:2009-07-06 13:00:38

标签: c++ linux unix

我正在研究将在多个操作系统和平台上使用的工具。这些工具将提供运行它的操作系统的详细信息,例如32位或64位操作系统,Linux的完整版本,Solaris或其他操作系统。

我想的一种方法是使用“uname -a”命令在基于Linux / Unix的操作系统上提取操作系统信息。如果从程序中调用命令是有效的,请建议我。

是否有可用的API或者我可以实施哪些解决方法?

请注意,我还需要检查Windows上的操作系统信息。

5 个答案:

答案 0 :(得分:4)

为什么不简单地用#define包装OS检测,每次调用理想函数以便在每种情况下都返回一个有意义的字符串?

获取有关当前操作系统信息的系统函数的一些示例(例如正在运行的版本):

答案 1 :(得分:2)

C ++标准库无法执行此操作,因此您将受操作系统特定功能的限制。即便如此,也没有通用方法,因为Windows上不支持像“uname”这样的实用程序,并且会在不同的UNIX风格上给出不同格式的结果。

答案 2 :(得分:1)

您可以尝试sysinfo()调用(来自Unix上的sys/systeminfo.h)。

关于“uname -a”效率,还取决于你要在哪里使用它。在正常情况下(如果您的应用程序不是时间/ CPU关键),“uname -a”的性能应该是可以接受的。

sys/systeminfo.h文件中还有一个“uname()”函数,可以帮助你。

答案 3 :(得分:0)

我认为uname -a是一种好方法,但仅适用于* nixes。

答案 4 :(得分:0)

没有标准的方法可以做到这一点。但您可以应用指纹识别技术找出目标操作系统。

这些通常用于猜测远程机器操作系统。您也可以查看Nmap。它做各种类型的指纹识别。