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