getaddrinfo(エラー処理)

getaddrinfoもgethostbynameと同じようにperrorではないエラー解析関数があります。 ここでは、getaddrinfoがエラーで終了したときにgai_strerrorを利用してエラー内容を表示させる方法を説明します。

単純な例

とりあえず、簡単なサンプルを書いてみます。 下記サンプルでは、無効な引数を使ってgetaddrinfoを利用しています。


#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>

int
main()
{
 int err;

 if ((err = getaddrinfo(NULL, NULL, NULL, NULL)) != 0) {
   printf("error %d : %s\n", err, gai_strerror(err));
   return 1;
 }

 return 0;
}

上記サンプルでは、無効な引数でgetaddrinfoを利用して変数errが0ではない値になるようにしています。 getaddrinfoが失敗した後には、if文の中でgai_strerrorが返すエラー説明文字列をprintfすることによりエラー内容を表示しています。

上記サンプルの実行結果は、私の環境では以下のようになりました。


error -2 : Name or service not known