getenv - Mac OS X和Linux上的环境变量

时间:2013-05-10 09:06:42

标签: c linux macos environment-variables

getenv用于访问Mac OS X和Linux上的环境变量,需要char*作为输入。这是否意味着我不能将UNICODE字符串存储为这些系统上的这些环境变量中的值?

在Windows GetEnvironmentVariable等处,返回可容纳UTF16字符串的宽字符串。

2 个答案:

答案 0 :(得分:0)

当时,Unix系统并没有考虑到宽带的发明。因此,不可能创建宽字符串环境变量或读取它们 对于Windows,有一个C-Runtime wchar_t *_wgetenv( const wchar_t *varname );的扩展,但这不会给你在Unix系统上的大量使用。

答案 1 :(得分:0)

在当前的Linux(可能还有MacOSX)上,UTF-8编码的字符串非常常见。 (但也有例外情况,请参阅locale命令等...)。

Michael Burr所述,您可以假设getenv返回UTF-8字符串。但是如果你想要最大的可移植性,只在环境变量中使用ASCII。

从C或C ++程序员的角度来看,getenv(3)返回char *,您可能希望使用与UTF-8相关的函数来处理它。请注意,getenv不会返回wchar_t*指针。

请参阅locale(7)手册页,注意当前区域设置可以由LANGLC_ALL等环境变量定义...请参阅environ(7)