linux - 如何在我的 Fortran 代码中检索架构类型(Linux 与 Windows)

标签 linux windows architecture fortran

如何在我的 Fortran 代码中检索架构类型(Linux 与 Windows)?是否有某种内在函数或子程序提供此信息?然后我想在每次系统调用时使用这样的开关:

if (trim(adjustl(Arch))=='Linux') then
  resul = system('ls > output.txt')
elseif (trim(adjustl(Arch))=='Windows')
  resul = system('dir > output.txt')
else
  write(*,*) 'architecture not supported'
  stop
endif

谢谢 A.

最佳答案

Fortran 2003 标准引入了 GET_ENVIRONMENT_VARIABLE 内部子例程。一种简单的调用形式是

call GET_ENVIRONMENT_VARIABLE (NAME, VALUE)

这将返回 VALUE 中名为 NAME 的变量的值。该例程还有其他可选参数,您最喜欢的引用文档将解释所有这些。这相当假设您可以找到一个环境变量来告诉您执行平台是什么。

如果您的编译器尚未实现此标准方法,则极有可能采用非标准方法;一个名为 getenv 的例程曾经在我最近使用的不止一个 Fortran 编译器上可用。

2008 标准引入了一个标准函数 COMPILER_OPTIONS,如果编译器支持这种操作,它将返回一个包含用于程序的编译选项的字符串。与 GET_ENVIRONMENT_VARIABLE 相比,这似乎没有得到广泛实现,请参阅您的编译器文档集以了解详细信息和可用性。如果可用,它也可能对您有用。

您可能还对 2008 年引入的子例程 EXECUTE_COMMAND_LINE 感兴趣,它是您在片段。这已经在许多当前的 Fortran 编译器中可用。

关于linux - 如何在我的 Fortran 代码中检索架构类型(Linux 与 Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26379317/

相关文章:

java - 在 Java 中获取 FQDN

architecture - 有没有人在企业场景中使用过 Google Gears?

mysql - 如何将服务器和应用程序分开

linux - Golang无法安装软件包

计算系统总物理内存使用量

ruby-on-rails - 在服务器(vps)ubuntu 16.04 中安装 ruby​​ on rails 时出错

c++ - 启动程序

MySQL架构: null columns vs.加入

linux - 编译 fatal error boost/文件系统

C 程序创建 3 个从 3 个不同文件读取的子进程