perror() — エラー・メッセージの出力

フォーマット

#include <stdio.h>
void perror(const char *string);

言語レベル

ANSI

スレッド・セーフ

はい

説明

perror() 関数は、エラー・メッセージを stderr に出力します。 stringNULL ではなく、ヌル文字を指示しない場合には、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();
   }
}