perror() — エラー・メッセージの出力
形式
#include <stdio.h>
void perror(const char *string);言語レベル
ANSI
スレッド・セーフ
はい
説明
perror() 関数は、エラー・メッセージを stderrに出力します。 string が NULL ではなく、ヌル文字を指示しない場合には、string によって指示されたストリングは、標準エラー・ストリームに出力され、その後ろにコロンとスペースが続きます。 次に、errno の値と関連したメッセージが出力され、その後ろに改行文字が続きます。
正確な結果を得るには、ライブラリー関数がエラーで戻った直後に perror() 関数が呼び出されるようにする必要があります。そうしないと、後続の呼び出しによって errno 値が変更される可能性があります。
戻り値
戻り値はありません。
errno の値は、次のいずれかに設定されます。
- 値
- 意味
- EBADDATA
- メッセージ・データが無効です。
- EBUSY
- レコードまたはファイルが使用中です。
- ENOENT
- ファイルまたはライブラリーが見つかりません。
- EPERM
- アクセス権限が不十分です。
- ENOREC
- レコードが見つからない。
- EIOERROR
- 回復不能入出力エラーが起こりました。
- EIORECERR
- 回復可能入出力エラーが起こりました。
例
この例では、ストリームを開こうと試みます。
fopen() が失敗すると、この例ではメッセージを出力し、プログラムを終了します。#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fh;
if ((fh = fopen("mylib/myfile","r")) == NULL)
{
perror("Could not open data file");
abort();
}
}