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$
エラーメッセージが表示されました。
よく見慣れてるやつですね。
コメント