getenv, getenv_s
|
定義済みヘッダー
<stdlib.h>
|
||
|
char
*
getenv
(
const
char
*
name
)
;
|
(1) | |
|
errno_t getenv_s
(
size_t
*
restrict
len,
char
*
restrict
value,
rsize_t valuesz, const char * restrict name ) ; |
(2) | (C11以降) |
getenv
への別の呼び出しや、POSIX関数
setenv()
、
unsetenv()
、および
putenv()
の呼び出しは、前回の呼び出しで返されたポインタを無効にしたり、前回の呼び出しで取得した文字列を変更したりする可能性があります。
getenv
によって返される文字列を変更することは未定義動作を引き起こします。
-
- name がnullポインタ
- valuesz が RSIZE_MAX より大きい
- value がnullポインタかつ valuesz がゼロでない
-
すべての境界チェック付き関数と同様に、
getenv_sは、実装によって __STDC_LIB_EXT1__ が定義されており、かつユーザーが <stdlib.h> をインクルードする前に __STDC_WANT_LIB_EXT1__ を整数定数 1 に定義している場合にのみ利用可能であることが保証されます。
目次 |
パラメータ
| name | - | 検索対象の環境変数の名前を特定するnull終端文字列 |
| len | - |
getenv_s
が環境変数の長さを格納するユーザー提供の位置へのポインタ
|
| value | - |
getenv_s
が環境変数の内容を格納するユーザー提供の文字配列へのポインタ
|
| valuesz | - |
getenv_s
が
dest
に書き込みを許可される最大文字数(バッファのサイズ)
|
戻り値
注記
POSIXシステムでは、
環境変数
はグローバル変数
environ
を通じてアクセス可能であり、これは
extern
char
**
environ
;
として
<unistd.h>
で宣言されています。また、
main関数
のオプションの第三引数
envp
を通じてもアクセスできます。
getenv_s
の呼び出しにおいて、
value
に null ポインタを、
valuesz
にゼロを指定すると、結果全体を格納するために必要なバッファサイズを決定するために使用されます。
例
#include <stdio.h> #include <stdlib.h> int main(void) { const char *name = "PATH"; const char *env_p = getenv(name); if (env_p) printf("Your %s is %s\n", name, env_p); }
出力例:
Your PATH is /home/gamer/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/share/games
参考文献
- C23規格 (ISO/IEC 9899:2024):
-
- 7.22.4.6 getenv関数 (p: TBD)
-
- K.3.6.2.1 getenv_s関数 (p: TBD)
- C17規格 (ISO/IEC 9899:2018):
-
- 7.22.4.6 getenv関数 (p: 256-257)
-
- K.3.6.2.1 getenv_s関数 (p: 440-441)
- C11規格 (ISO/IEC 9899:2011):
-
- 7.22.4.6 getenv関数 (p: 352-353)
-
- K.3.6.2.1 getenv_s関数 (p: 606-607)
- C99規格 (ISO/IEC 9899:1999):
-
- 7.20.4.5 getenv関数 (p: 317)
- C89/C90標準 (ISO/IEC 9899:1990):
-
- 4.10.4.4 getenv関数
関連項目
|
C++ ドキュメント
for
getenv
|