Fn strerror 関数は、エラー番号の引数 Fa errnum を受け取って、それに対応するメッセージ文字列へのポインタを返します。
Fn strerror_r 関数は、 同じ結果を 最大 Fa buflen 文字数の Fa strerrbuf に直し、 成功した場合は 0 を返します。
Fn perror 関数は、大域変数 errno (intro(2) ) の現在の値に対応するエラーメッセージを探して、 それに改行をつけて標準エラーファイル記述子に書込みます。引数 Fa string が ヌル 以外であり、ヌル文字を指さない場合は、 この文字列はメッセージ文字列の前にコロンとスペース (`:' ) で区切って追加されます。 それ以外の場合は、エラーメッセージ文字列のみが印字されます。
Fa errnum がエラー番号として認識できない場合は、 Fn strerror は、 ``Unknown error: '' のエラーメッセージ文字列の後に、 10 進数のエラー番号を返し、 errno に Er EINVAL をセットします。 Fn strerror_r は、 Fa strerrbuf を変更せずに Er EINVAL を返します。 エラー番号が 0 <= Fa errnum < Fa sys_nerr 内の実装では、認識できません。
エラー文字列を含む ( Fa buflen で指定されているより) Fa strerrbuf が不十分な領域の場合、 Fn strerror_r は Er ERANGE を返し、 Fa strerrbuf には、 Fa buflen で指定された ヌル文字で終了する長さの 切り捨てたエラーメッセージが入ります。
メッセージ文字列には、外部配列 sys_errlist を使って直接アクセスすることができます。外部値 sys_nerr には sys_errlist の中にあるメッセージのカウントが入っています。 これらの変数を使用することには賛成できません。代わりに、 Fn strerror または Fn strerror_r を使った方がよいでしょう。
sys_errlist 変数を使用している好ましくないプログラムは、 その変数を一貫性なく宣言するために失敗することがしばしばあります。