perrorを使って、エラーメッセージを簡単に表示させてみます。
man 3 perrorの冒頭。
PERROR(3) Linux Programmer's Manual PERROR(3)
名前
perror - システムエラーメッセージを出力する
書式
#include <stdio.h>
void perror(const char *s);
#include <errno.h>
const char * const sys_errlist[];
int sys_nerr;
int errno; /* 実際にこのように宣言されているわけではない。 errno(3) 参照 */
引数に指定する文字列は、エラーが発生した関数に使用した文字列を使えば、たいてい上手くいきます。
statでエラーが出た時のメッセージをperrorで表示するプログラムです。
takk@deb9:~/tmp$ cat -n test.c
1 #include <sys/types.h>
2 #include <sys/stat.h>
3 #include <unistd.h>
4 #include <stdio.h>
5 #include <errno.h>
6
7 int main(int argc, char* argv[])
8 {
9 struct stat buf;
10 char* filename;
11 filename = argv[1];
12
13 if(stat(filename,&buf) == -1){
14 perror(filename);
15 }
16 return 0;
17 }
takk@deb9:~/tmp$
ビルド。そして、存在するファイルをパラメータで与えて、成功するパターンの確認。
takk@deb9:~/tmp$ gcc test.c takk@deb9:~/tmp$ ./a.out test.c takk@deb9:~/tmp$
perrorの処理は通らないパターンなので、何も出ませんでした。
次は、存在しないファイルにアクセスしてみます。file1.txtという存在しないファイルを指定しますが、本当に存在しないかlsで確認。
takk@deb9:~/tmp$ ls file1.txt ls: 'file1.txt' にアクセスできません: そのようなファイルやディレクトリはありません takk@deb9:~/tmp$
ありませんでした。
では、パラメータで与えてみます。
takk@deb9:~/tmp$ ./a.out file1.txt file1.txt: No such file or directory takk@deb9:~/tmp$
エラーメッセージが表示されました。
よく見慣れてるやつですね。


コメント