Originariamente inviato da atomico
il server è fermo sull'accept, se premo ctrl+c, fa l'handler e se nn metto l'exit torna sull'accept.
codice:
$ man 2 accept

ACCEPT(2)                   BSD System Calls Manual                  ACCEPT(2)

NAME
     accept -- accept a connection on a socket

SYNOPSIS
     #include <sys/socket.h>

     int
     accept(int socket, struct sockaddr *restrict address, socklen_t *restrict address_len);
...
ERRORS
     The accept() system call will fail if:

     [EBADF]            socket is not a valid file descriptor.

     [ECONNABORTED]     The connection to socket has been aborted.

     [EFAULT]           The address parameter is not in a writable part of the user address space.

     [EINTR]            The accept() system call was terminated by a signal.
...
dunque c'e' un modo per "sbloccarlo" tramite una signal, magari basta appunto il SIGINT o che ne so prova con altri.
;-)

p.s.
attento che il valore numerico cambia tra i vari sistemi operativi: per vedere i valori del tuo SO fai un (ad esempio sotto Mac):
codice:
$ kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL
 5) SIGTRAP	 6) SIGABRT	 7) SIGEMT	 8) SIGFPE
 9) SIGKILL	10) SIGBUS	11) SIGSEGV	12) SIGSYS
13) SIGPIPE	14) SIGALRM	15) SIGTERM	16) SIGURG
17) SIGSTOP	18) SIGTSTP	19) SIGCONT	20) SIGCHLD
21) SIGTTIN	22) SIGTTOU	23) SIGIO	24) SIGXCPU
25) SIGXFSZ	26) SIGVTALRM	27) SIGPROF	28) SIGWINCH
29) SIGINFO	30) SIGUSR1	31) SIGUSR2