Не думаю, что вы предоставили достаточно информации, чтобы ответить на этот вопрос. Например, если вы открыли сокет UDP, то закрытие на отправляющей стороне не окажет влияния на принимающую сторону. Если это TCP, то что-то еще не работает. Я полагаю, что если вы действительно имеете дело с сокетами, вы используете recv
или recvfrom
вместо read
.
В случае TCP ваше чтение вернет 0 байтов, что указывает на то, что другая сторона закрыла соединение.
Если вы действительно делаете это между двумя потоками, а не двумя процессами, канал может быть более подходящим. Это не означает, что канал не может быть использован между двумя отдельными процессами, просто в этом случае требуется немного больше настройки.