【发布时间】:2018-03-08 03:39:40
【问题描述】:
我有兴趣通过 Fortran 获取系统信息 - 类别可能包括:
- 操作系统名称
- 操作系统版本
- CPU 架构(32/64 位)
- 核心数
据我了解,您可以通过预处理指令获取基本的操作系统信息,例如
#ifdef _WIN32
print *,'Windows'
#ifdef _APPLE_
print *,'macOS'
#ifdef __linux
print *,'Linux'
#endif
这是第 1 类的有效解决方案,但仍保留第 2 - 4 类。
谢谢!
【问题讨论】:
-
您可能应该看看内部例程
execute_command_line和get_environment_variable。 -
不要忘记 2-4 在 Windows 和 Linux 之间会有所不同。最好只问一个问题,因为您的观点可能需要不同的方法。
-
确实很棒,但并非没有“问题”。我认为第一个问题是对
execute_command_line的调用中命令的执行发生在子环境中(或者在您的平台上调用它们的任何东西),因此任何设置(例如环境变量)都会在子环境中消失-environment 完成运行。所以环境变量不在get_environment_variable钓鱼的环境中。我认为最简单的组合是...... -
... 让命令行写入文件,例如
execute_command_line("getconf _NPROCESSORS_ONLN > nprocs.dat",wait=.true.)之类的东西,你稍后会读到。 -
调用相关的C函数;以uname(2) 和sysconf(3) 开头
标签: fortran gfortran fortran90 preprocessor