如何从Chapel程序中读取环境变量?

3

如何在Chapel程序中读取环境变量?

1个回答

3

可以通过调用getenv函数访问环境变量,例如:

// Compiled and run on Chapel 1.22.0

extern proc getenv(name : c_string) : c_string;

var value = getenv('SOME_ENV_VAR'.c_str()):string;

任何人都可以在在线尝试、测试和扩展这段代码。

有关更多环境变量API,请参见用户开发的EnvVariables模块


2
对于 Chapel 程序的分布式内存执行,不同的节点会产生不同的结果吗?这是否应该成为一个官方库能力,而不是依赖于 extern 声明和类型? - Brad
1
@Brad - 是的。在答案中链接的EnvVariables模块中,这个管理得更加清晰(接口与语言环境绑定,例如locale.getEnv())。请参见https://github.com/chapel-lang/chapel/issues/5939以获取相关的设计讨论。 - ben-albrecht
@ben-albrecht 鉴于异构NUMA代码执行环境的特性,分布式“环境”在所有非本地区域的广阔景观中如何分配(至少反映)环境设置?换句话说,抽象的“环境”是否在所有非本地区域均匀保留其角色和功能(设置/保持保留/获取修改/(重新)传播更新),或者由于异构NUMA生态系统的分布式特性,已经失去了其意义和作用,无法实现统一的“环境”? - user3666197
1
@user3666197 - 我认为当使用多语言环境的默认启动器启动程序时,所有区域设置都将继承从启动程序的 shell 会话中获取的环境。一旦程序运行,对环境的修改将基于每个区域设置。任何形式的跨区域同步更新都需要额外的努力。我回答中的代码示例是有意保持最小化的。对于更强大的实现,建议查看上面链接的 EnvVariables 模块。进一步讨论也可能更相关作为一个设计问题。 - ben-albrecht

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接