我正在研究将在多个操作系统和平台上使用的工具。这些工具将提供运行它的操作系统的详细信息,例如32位或64位操作系统,Linux的完整版本,Solaris或其他操作系统。
我想的一种方法是使用“uname -a”命令在基于Linux / Unix的操作系统上提取操作系统信息。如果从程序中调用命令是有效的,请建议我。
是否有可用的API或者我可以实施哪些解决方法?
请注意,我还需要检查Windows上的操作系统信息。
答案 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。它做各种类型的指纹识别。