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();
}
}