select is a POSIX syscall which allows you to wait on several different filedescriptors (including sockets) for the event that they won’t block on write; won’t block or read or are in error. This syscall is very convenient when you’re writing a server.
When I want to shutdown an instance of the server, I have to interrupt the
select. I have yet to find a satisfying way of doing this. At the moment I create a pair of linked sockets with
socketpair. I include one of them to the sockets on which to block until there is data to read in the
select call. To interrupt, I simply write some data to the other socket which will cause data to be available on the socket which in turn will interrupt the
There must be a more elegant solution.