/dev/urandom
- это интерфейс к генератору случайных чисел, управляемому энтропией ядра. Он имеет справочную страницу, которую вы можете найти онлайн и, вероятно, также локально. Открытие через fopen()
не имеет документированного влияния на данные, которые впоследствии могут быть прочитаны. Нет задокументированного ограничения на одно чтение за одно открытие, и такой предел не будет правдоподобным.
Итак, я подумал: почему бы не позвонить fopen("/dev/urandom", "rb")
только один раз в
запуск сервера, а затем позвоните fread
, как мне нужно?
Вы можете сделать это. Основная стоимость заключается в том, что вы постоянно посвящаете одно из ограниченного числа открытых файлов вашего процесса этой цели, но это вполне может не стать для вас проблемой.
Примеры, которые я нашел в Интернете, обычно показывают фред, непосредственно предшествующий fopen. Но разве это не дорого?
Открытие файла сравнительно дорого, особенно с учетом того, что он уже открыт и, следовательно, ничего не делает, но то, насколько он дорог, имеет значение, зависит от того, как часто это делается, чем еще может заниматься программа в или около нее. В то же время и другие факторы. Однако я склонен полагать, что ничего из этого не имеет никакого отношения к вашим веб-примерам, поскольку я считаю, что они представлены, поскольку они, по крайней мере, частично для дидактических целей. Если вы пишете пример, то гораздо проще и яснее показать fopen()
, чем описать словами, что используемый вами FILE
подключен к /dev/urandom
.