レスありがとうございます。とても勉強になります。

returnした時の挙動というのは具体的に言うとこういう事です。

static void alarm(int);

int connect(int a, int b)
{
...A
signal(SIGALRM, alarm);
...B
}

alarm(int signo)
{
return;
}

とあった時SIGALRMシグナルが呼び出されてalarm関数に飛んだ後
returnで一気にconnectへ帰って...Bの領域を実行して無いようなのですが・・・

アドバイスよろしくお願いします。