Подтвердить что ты не робот

Есть ли способ безопасно использовать errno в многопоточном приложении?

Если вы пишете многопоточное приложение, которое использует вызовы системы/библиотеки, которые используют errno для указания типа ошибки, существует ли безопасный способ использования errno? Если нет, есть ли другой способ указать тип ошибки, который произошел, а не только произошла ошибка?

4b9b3361

Ответ 1

Если ваша стандартная библиотека имеет многопоточность, то она, вероятно, имеет #define, которая меняет errno на вызов функции, который возвращает возвращаемое значение локальной ошибки. Однако, чтобы использовать это, вы обычно должны включать <errno.h>, а не полагаться на объявление extern.

Я нашел статью Thread-safety и POSIX.1, которая затрагивает этот самый вопрос.

Ответ 2

man errno говорит:

errno определяется стандартом ISO C быть модифицируемым значением l типа int и не должно быть явно заявленному; errno может быть макросом. ERRNO является нито-локальным; установив его в один нить не влияет на ее значение в любой другой теме.