
Комментарии 3
Хотел написать "мсье знает толк", но ведь и правда знает, и в данном случае это круто (независимо от странности решаемой проблемы!)
Последний раздел можно продолжить:
Использование ресурсов: Если вызовы функции делать в разных потоках, то возможно открытие нескольких дескрипторов, и при выходе удалится только один через функцию close_... . Также, если все вызовы делать не из "главного" потока, то возможно, что открытые дескрипторы вообще не будут освобождены. Однако, такое поведение не влияет на качество получаемых данных, а дескрипторы в любом случае будут закрыты по завершении процесса. Некоторое беспокойство следует проявлять только при очень большом количестве потоков с запросами случайных данных на архитектуре ARM.
Производительность: если открытие файла /dev/urandom всегда возвращает ошибку (нет прав или др.), то использование функций будет каждый раз тратить ресурсы процессора на попытку открытия файла. Это может сказаться на производительности, программисту рекомендуется запоминать факт возврата ошибки и в дальнейшем функцию не вызвать.
Особые случаи: при использовании getentropy возможна ошибка (возврат -1), когда код ошибки заполнен мусором (когда вычитано меньшее количество данных).
Запуск программ, требующих getrandom() и getentropy(), на ядрах Linux старше 3.17