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

関連情報