Должна ли сломанная розетка быть закрытой? - PullRequest
0 голосов
/ 26 августа 2018

Я читаю из TCP-сокета:

int read_result = recv(socket_fd, &some_struct, some_size, 0);

Если read_result будет равен -1, я все еще должен вызвать close для этого файлового дескриптора или просто оставить его?

1 Ответ

0 голосов
/ 26 августа 2018

Согласно справочной странице recv существует множество причин, по которым recv может вернуть -1 (EAGAIN, EBADF, EINVAL, ENOMEM и т. Д.).Я бы посоветовал проверить errno на соответствие ожидаемым возвращаемым значениям и изменить ваш код, чтобы он действовал соответствующим образом.Если вы пишете библиотеку, вы можете вернуть код ошибки библиотеки.Если вы являетесь заявителем, возможно, вы захотите умереть или вернуть код ошибки вызывающей стороне.Это будет зависеть от контекста.

Однако первым шагом к решению этой проблемы будет понимание различных кодов ошибок, которые могут быть возвращены, и их соответствующая обработка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...