提问人:s_question 提问时间:10/10/2023 更新时间:10/10/2023 访问量:77
Windows:从 Cygwin 确定 C 语言中的操作系统版本
Windows: Determine OS version in C from Cygwin
问:
我有一些代码在 Cygwin 环境中运行,这使得 Windows 看起来像 Unix。 我想获取操作系统版本,但 Posix 函数调用 uname 不存在。 有没有其他方法可以以编程方式获取它? 我正在使用 GCC 编译器; 我没有安装任何 Microsoft 开发软件。
答:
0赞
Philippe
10/10/2023
#1
试试这个:
#include <stdio.h>
#include <sys/utsname.h>
int main(int argc, char *argv[])
{
struct utsname utsname;
if (uname(&utsname) == 0) {
printf("sysname = %s\n", utsname.sysname);
printf("nodename = %s\n", utsname.nodename);
printf("release = %s\n", utsname.release);
printf("version = %s\n", utsname.version);
#if __GNU_VISIBLE
printf("domainname = %s\n", utsname.domainname);
#else
printf("domainname = %s\n", utsname.__domainname);
#endif
}
return 0;
}
输出:
sysname = CYGWIN_NT-10.0-22621
nodename = hostname
release = 3.4.5-1.x86_64
version = 2023-01-19 19:09 UTC
domainname =
评论
0赞
IInspectable
10/10/2023
“试试这个”类型的答案几乎是无用的。答案需要提供的最低限度是确定问题并确认建议的解决方案如何解决问题。
0赞
s_question
10/10/2023
这就是我尝试过的,但缺少标头 sys/utsname.h。
0赞
Philippe
10/11/2023
@s_question 在 Cygwin 中,头文件 sys/utsname.h 是 cygwin 包本身的一部分。cygwin 包提供了提供 POSIX API 功能的基本 Cygwin 库。你能运行命令吗:find /usr/include -name utsname.h
0赞
s_question
10/11/2023
@Philippe 是的,我就是这么做的。它不见了。也许有人可以提醒维护者?我像往常一样选择从 vt.edu 下载,就像我多年来所做的那样。
0赞
Philippe
10/12/2023
您是否尝试过将cygwin安装在新目录中并查看是否存在?sys/utsname.h
评论
#include <windows.h>