Разъединение TCP сигнализируется с помощью POLLIN, и read () вернет 0 в случае постепенного завершения работы, или -1 и соответствующую ошибку (ошибочно является чем-то иным, кроме EINTR / EWOULDBLOCK).
Существуют платформы, на которых это может сигнализироваться с помощью POLLHUP, поэтому вы можете также обработать этот случай.