connect関数をタイムアウトにする方法

  int timeout(int sig)
  {
      close(sock);
      return;
  }

  int main(void)
  {
      hogehoge

      hogehoge

      sock = socket(〜〜〜〜〜);


      signal(SIGALRM, timeout);
      alarm(5);
        /* ualarmにするとマイクロ秒単位で設定が可能に */

      if(connect(〜〜〜〜〜) == 0) {


      }
       
        alarm(0);
        close(sock);
      return;
  }


とすると、5秒後にシグナルが呼ばれて、それによりtimeout()が呼ばれて、
よろしよろしに。
まあ、若干省きまくってるけど、一応メモ。