Является ли повторный вход getpwnam_r() обязательным требованием?

#c #linux #unix #posix #nss

#c #linux #unix #posix #nss

Вопрос:

getpwnam_r() является реентерабельным в соответствии с рядом справочных страниц. Однако стандартное только состояние

Функция getpwnam_r() потокобезопасна и возвращает значения в пользовательский буфер вместо возможного использования области статических данных, которая может быть перезаписана при каждом вызове.

Я в замешательстве. Должна ли функция модуля NSS … getpwnam_r() повторно входить? Или достаточно просто потокобезопасности?

Ответ №1:

Ну, как вы заметили, стандарт требует, чтобы функция была потокобезопасной. Это не мешает реализации предоставлять более строгую гарантию.

Итак, переносимое программное обеспечение не может предположить, что getpwnam_r является реентерабельным. Но, если вас интересует только какая-то конкретная платформа, которая гарантирует, что она реентерабельна, то, по-видимому, вы можете предположить, что.