Man page - strerrorname_np(3)

Packages contains this manual

Available languages:

en fr ja de

Manual

STRERROR

名 前
書 式
説 明
strerror_r()
strerror_l()
返 り 値
エ ラ ー
バ ー ジ ョ ン
属 性
準 拠
注 意
関 連 項 目
こ の 文 書 に つ い て

名 前

strerror, strerrorname_np, strerrordesc_np, strerror_r, strerror_l - エ ラ ー 番 号 を 説 明 す る 文 字 列 を 返 す 。

書 式

#include <string.h>

char *strerror(int errnum );
const char *strerrorname_np(int
errnum );
const char *strerrordesc_np(int
errnum );

int strerror_r(int errnum , char * buf , size_t buflen );
/* XSI-compliant */

char *strerror_r(int errnum , char * buf , size_t buflen );
/* GNU-specific */

char *strerror_l(int errnum , locale_t locale );

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 ( feature_test_macros (7) 参 照 ):

strerrorname_np (), strerrordesc_np ():
_GNU_SOURCE
strerror_r
():

次 の 場 合 に は XSI 準 拠 の バ ー ジ ョ ン が 提 供 さ れ る :
(_POSIX_C_SOURCE >= 200112L) && !  _GNU_SOURCE
そ れ 以 外 の 場 合 、 GNU バ ー ジ ョ ン が 提 供 さ れ る 。

説 明

strerror () 関 数 は 、 引 数 errnum で 渡 さ れ た エ ラ ー コ ー ド に つ い て の 説 明 が 入 っ た 文 字 列 へ の ポ イ ン タ ー を 返 す 。 可 能 で あ る な ら ば 、 適 切 な 言 語 を 選 択 す る た め に 、 現 在 の ロ ケ ー ル の LC_MESSAGES を 使 う 。 (例 え ば 、 errnum EINVAL の 場 合 、 説 明 と し て "Invalid argument" が 返 さ れ る 。 ) こ の 文 字 列 は 、 ア プ リ ケ ー シ ョ ン で 変 更 し て は な ら な い が 、 こ れ 以 降 に 行 わ れ る strerror () や strerror_l () の 呼 び 出 し で 変 更 さ れ て も 構 わ な い 。 perror (3) な ど の 、 こ れ 以 外 の ラ イ ブ ラ リ 関 数 で は こ の 文 字 列 は 変 更 さ れ な い 。

Like strerror (), the strerrordesc_np () function returns a pointer to a string that describes the error code passed in the argument errnum , with the difference that the returned string is not translated according to the current locale.

The strerrorname_np () function returns a pointer to a string containing the name of the error code passed in the argument errnum . For example, given EPERM as an argument, this function returns a pointer to the string "EPERM".

strerror_r()

strerror_r () 関 数 は strerror () と 似 て い る が 、 ス レ ッ ド セ ー フ で あ る 。 こ の 関 数 に は 二 種 類 の バ ー ジ ョ ン が 存 在 し 、 POSIX.1-2001 で 規 定 さ れ た XSI 準 拠 の バ ー ジ ョ ン (glibc 2.3.4 以 降 で 利 用 可 能 だ が 、 glibc 2.13 ま で は POSIX 準 拠 で は な い ) と 、 GNU 仕 様 の バ ー ジ ョ ン (glibc 2.0 以 降 で 利 用 可 能 ) で あ る 。 「 書 式 」 の 節 に 記 載 さ れ た 機 能 検 査 マ ク ロ の 場 合 に は 、 XSI 準 拠 の バ ー ジ ョ ン が 提 供 さ れ る 。 そ れ 以 外 の 場 合 に は GNU 仕 様 の バ ー ジ ョ ン が 提 供 さ れ る 。 機 能 検 査 マ ク ロ が 一 つ も 明 示 的 に 定 義 さ れ な い 場 合 、 (glibc 2.4 以 降 で は ) デ フ ォ ル ト で _POSIX_C_SOURCE は 値 200112l で 定 義 さ れ 、 そ の 結 果 XSI 準 拠 の バ ー ジ ョ ン の strerror_r () が デ フ ォ ル ト で 提 供 さ れ る 。

移 植 性 が 必 要 な ア プ リ ケ ー シ ョ ン で は 、 XSI 準 拠 の strerror_r () を 使 う 方 が よ い 。 こ の 関 数 は 、 ユ ー ザ ー か ら 提 供 さ れ る 長 さ buflen の バ ッ フ ァ ー buf に エ ラ ー 文 字 列 を 返 す 。

GNU 仕 様 の strerror_r () は 、 エ ラ ー メ ッ セ ー ジ を 格 納 し た 文 字 列 へ の ポ イ ン タ ー を 返 す 。 返 り 値 は 、 こ の 関 数 が buf に 格 納 し た 文 字 列 へ の ポ イ ン タ ー か 、 何 ら か の (不 変 な ) 静 的 な 文 字 列 へ の ポ イ ン タ ー 、 の い ず れ か と な る (後 者 の 場 合 は buf は 使 用 さ れ な い )。 buf に 文 字 列 が 格 納 さ れ る 場 合 は 、 最 大 で buflen バ イ ト が 格 納 さ れ る ( buflen が 小 さ 過 ぎ た と き に は 文 字 列 は 切 り 詰 め ら れ 、 errnum は 不 定 で あ る )。 文 字 列 に は 必 ず 終 端 ヌ ル 文 字 ('\0') が 含 ま れ る 。

strerror_l()

strerror_l () は strerror () と 同 様 だ が 、 errnum locale で 指 定 さ れ た ロ ケ ー ル の ロ ケ ー ル 依 存 の エ ラ ー メ ッ セ ー ジ に マ ッ ピ ン グ す る 。 locale が 特 別 な ロ ケ ー ル オ ブ ジ ェ ク ト LC_GLOBAL_LOCALE の 場 合 、 も し く は locale が 有 効 な ロ ケ ー ル オ ブ ジ ェ ク ト ハ ン ド ル で な い 場 合 は 、 strerror_l () の 動 作 は 未 定 義 で あ る 。

返 り 値

関 数 strerror (), strerror_l () と GNU 固 有 の 関 数 strerror_r () は エ ラ ー 内 容 を 説 明 す る 文 字 列 を 返 す 。 エ ラ ー 番 号 が 未 知 の 場 合 は "Unknown error nnn" と い う メ ッ セ ー ジ を 返 す 。

On success, strerrorname_np () and strerrordesc_np () return the appropriate error description string. If errnum is an invalid error number, these functions return NULL.

XSI 準 拠 の strerror_r () 関 数 は 成 功 す る と 0 を 返 す 。 エ ラ ー の 場 合 に は 、 (glibc 2.13 以 降 で は ) (正 の ) エ ラ ー 番 号 が 返 さ れ 、 (バ ー ジ ョ ン 2.13 よ り 前 の glibc で は ) -1 が 返 さ れ 、 errno に エ ラ ー を 示 す 値 が セ ッ ト さ れ る 。

POSIX.1-2001 と POSIX.1-2008 で は 、 strerror () や strerror_l () が 成 功 し た 場 合 は errno を 変 更 せ ず に 元 の ま ま に し な け れ ば な ら な い と さ れ て い る 。 関 数 の ど の 返 り 値 も エ ラ ー を 示 す た め に 予 約 さ れ て い な い の で 、 エ ラ ー を チ ェ ッ ク し た い ア プ リ ケ ー シ ョ ン は 呼 び 出 し を 行 う 前 に errno を 0 に 初 期 化 し 、 呼 び 出 し の 後 で errno を チ ェ ッ ク す べ き 点 に 注 意 す る こ と 。

エ ラ ー

EINVAL

errnum の 値 が 有 効 な エ ラ ー 番 号 で は な い 。

ERANGE

エ ラ ー コ ー ド を 説 明 す る 文 字 列 の た め に 、 充 分 な 領 域 が 確 保 で き な か っ た 。

バ ー ジ ョ ン

strerror_l () 関 数 は glibc 2.6 で 初 め て 登 場 し た 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-16202-1.png

準 拠

strerror () は POSIX.1-2001, POSIX.1-2008, C89, C99 で 規 定 さ れ て い る 。 strerror_r () は POSIX.1-2001 と POSIX.1-2008 で 規 定 さ れ て い る 。

strerror_l () は POSIX.1-2008 で 規 定 さ れ て い る 。

GNU 固 有 の 関 数 strerror_r (), strerrorname_np (), strerrordesc_np () は 、 非 標 準 の 拡 張 で あ る 。

POSIX.1-2001 は 、 strerror () が エ ラ ー に 遭 遇 し た 場 合 に errno を セ ッ ト す る こ と を 認 め て い る が 、 エ ラ ー 発 生 時 に 関 数 の 結 果 と し て ど ん な 値 を 返 す べ き か を 規 定 し て な い 。 あ る シ ス テ ム で は 、 エ ラ ー 番 号 が 未 知 の 場 合 、 strerror () は NULL を 返 す 。 他 の シ ス テ ム で は 、 エ ラ ー 番 号 が 未 知 の 場 合 、 strerror () は "Error nnn occurred" と い っ た 文 字 列 を 返 し 、 errno EINVAL を セ ッ ト す る 。 C99 と POSIX.1-2008 で は 、 返 り 値 が NULL 以 外 に な る こ と が 求 め ら れ て い る 。

注 意

The GNU C Library uses a buffer of 1024 characters for strerror (). This buffer size therefore should be sufficient to avoid an ERANGE error when calling strerror_r ().

strerrorname_np () and strerrordesc_np () are thread-safe and async-signal-safe.

関 連 項 目

err (3), errno (3), error (3), perror (3), strsignal (3), locale (7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。