是否可以在 C++ 中检测操作系统?
is it possible to detect operating system in c++?
我正在使用 CentOS,并尝试将 perl 代码转换为 C++。在 perl 中,我们可以使用
检测操作系统
$^O or we can print: print "S^O";
o/p: linux
我们在 C++ 中有任何函数可以完成这项工作。
提前致谢。
一般有两种方式:
OS 通过宏嗅探
例如。如果定义了 WIN32
那么你在 Windows.
Header 搜索路径。
必须为每个平台构建一个 C++ 程序。只需定义 header 搜索路径,以便找到平台的相关 header 版本。
对于 OS 嗅探检查 the macro list at SourceForge(据我所知,那里只有一个这样的项目)。
@Joachim Pileborg 感谢您的建议...对于 uname 系统调用...从以下代码我可以获得系统信息。
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/utsname.h>
int main(void) {
struct utsname buffer;
errno = 0;
if (uname(&buffer) != 0) {
perror("uname");
exit(EXIT_FAILURE);
}
printf("system name = %s\n", buffer.sysname);
printf("node name = %s\n", buffer.nodename);
printf("release = %s\n", buffer.release);
printf("version = %s\n", buffer.version);
printf("machine = %s\n", buffer.machine);
return EXIT_SUCCESS;
}
我正在使用 CentOS,并尝试将 perl 代码转换为 C++。在 perl 中,我们可以使用
检测操作系统$^O or we can print: print "S^O";
o/p: linux
我们在 C++ 中有任何函数可以完成这项工作。 提前致谢。
一般有两种方式:
OS 通过宏嗅探
例如。如果定义了WIN32
那么你在 Windows.Header 搜索路径。
必须为每个平台构建一个 C++ 程序。只需定义 header 搜索路径,以便找到平台的相关 header 版本。
对于 OS 嗅探检查 the macro list at SourceForge(据我所知,那里只有一个这样的项目)。
@Joachim Pileborg 感谢您的建议...对于 uname 系统调用...从以下代码我可以获得系统信息。
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/utsname.h>
int main(void) {
struct utsname buffer;
errno = 0;
if (uname(&buffer) != 0) {
perror("uname");
exit(EXIT_FAILURE);
}
printf("system name = %s\n", buffer.sysname);
printf("node name = %s\n", buffer.nodename);
printf("release = %s\n", buffer.release);
printf("version = %s\n", buffer.version);
printf("machine = %s\n", buffer.machine);
return EXIT_SUCCESS;
}