gpt4 book ai didi

c - 如何在 macOS 的 C/C++ 中获取产品名称/版本(即获取 "Mac OS"和 "10.12.5")

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:29 27 4
gpt4 key购买 nike

我需要获取标题中的信息。我对以下变量进行了 sysctl 调用,它给了我其他(无用)信息(通常是关于内核而不是操作系统):KERN_VERSION、KERN_OSVERSION、KERN_TYPE、KERN_RELEASE。

我在这里查看了命令 sw_vers 的源代码:https://opensource.apple.com/source/DarwinTools/DarwinTools-1/sw_vers.c并尝试实现他们所做的事情,但是当我能够包括我的计算机时却找不到,因此我无法实现。当我查看我的/include/目录时,我根本找不到/CoreFoundation/,所以我不知道我从哪里拉它。

关于如何使用 C/C++ 获得它的任何想法?

谢谢

最佳答案

如果这是我的项目,我会简单地调用 sw_vers 实用程序并解析其输出。您可以使用 popen 来完成此操作,如下所示:

char buf[1024];
unsigned buflen = 0;
char line[256];
FILE *sw_vers = popen("sw_vers", "r");
while (fgets(line, sizeof(line), sw_vers) != NULL) {
int l = snprintf(buf + buflen, sizeof(buf) - buflen, "%s", line);
buflen += l;
assert(buflen < sizeof(buf));
}
pclose(sw_vers);

解析输出以获得相关信息。在我的系统上,输出是:

ProductName:    Mac OS X
ProductVersion: 10.12.5
BuildVersion: 16F73

因此,您可以解析每一行,而不是如图所示将其全部存储到缓冲区中。

一旦信息存储在您的程序中,就可以缓存结果。您的同一程序 future 的任何查询都可以使用缓存的结果,而不是再次调用 sw_vers

关于c - 如何在 macOS 的 C/C++ 中获取产品名称/版本(即获取 "Mac OS"和 "10.12.5"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44683285/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com