Итак ... Я был очень озадачен тем, почему мой tcp-сервер на основе epoll случайным образом зависал epoll_wait, а затем отправлял пустой массив некоторым соединениям, когда я завершал работу с SIGINT.
ОказываетсяУ меня была случайная ошибка в моем программном обеспечении, в результате которой я написал следующее:
write(server_socket_fd, payload, 0)
Хотя это было неверно, я, конечно, не ожидал, что вызов write с размером 0 зависнетвсе это.
Почему происходит такое поведение и как мне его предотвратить?Вызывает запись с аргументом длины ноль только UB, и я всегда должен убедиться, что размер> 0?