Там какая-либо обычная причина состоит в том, чтобы использовать открытый () вместо fopen ()?

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

blockquote>

Поток запросов не работает так в AADB2C. В случае, когда пользователь нажимает ссылку сброса пароля, AADB2C перенаправляет на службу проверяющей стороны (основную службу) с определенным кодом ошибки (AADB2C90118). Служба проверяющей стороны должна затем вызвать поток политики сброса пароля.

Ссылка на пример кода для перехвата ошибки и последующего перенаправления для сброса обработчика пароля

5
задан Wolf 24 September 2014 в 14:33
поделиться

6 ответов

Возражение, что "fopen" является портативным и "открытым", не, является поддельным.

fopen является частью libc, открытый системный вызов POSIX.

Каждый так же портативен как место, из которого они происходят.

i/o в fopen'ed файлы (необходимо предположить, что это может быть, и практически, это), буферизованный libc, открытые дескрипторы файлов () 'редактор не буферизуются libc (они могут быть и обычно буферизуются в файловой системе - но не все, что Вы открываете (), файл в файловой системе.

Какой смысл fopen'ing, например, узла устройства как/dev/sg0, скажем, или/dev/tty0... Что Вы собираетесь сделать? Вы собираетесь сделать ioctl на ФАЙЛЕ *? Удача с этим.

Возможно, Вы хотите открыться некоторыми флагами как O_DIRECT - не имеет никакого смысла с fopen ().

6
ответ дан 18 December 2019 в 05:40
поделиться

Лучше использовать открытый (), если Вы придерживаетесь подобных Unix систем, и Вам могло бы понравиться:

  • Имейте более мелкомодульный контроль над битами полномочий Unix на создании файла.
  • Используйте функции низшего уровня, такие как read/write/mmap в противоположность буферизованному потоку C функции ввода-вывода.
  • Используйте дескриптор файла (fd), основывал IO, планирующий (опрос, выберите, и т.д.), можно, конечно, получить fd из ФАЙЛА * использующий fileno (), но заботу нужно соблюдать для не смешивания ФАЙЛА *, базирующиеся функции потока с fd основывали функции.
  • Откройте любое специальное устройство (не регулярный файл)

Лучше использовать fopen/fread/fwrite для максимальной мобильности, поскольку это стандартные функции C, функции, которые я упомянул выше, не.

14
ответ дан 18 December 2019 в 05:40
поделиться

работы fopen над более высоким уровнем, чем открытый.... fopen возвращают Вас указатель на поток ФАЙЛА, который подобен потоковой абстракции, которую Вы читаете в C++

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

Потоки Stdio буферизуются, в то время как открытый () дескрипторы файлов не. Зависит от того, в чем Вы нуждаетесь. Можно также создать один из другого:

интервал fileno (ФАЙЛ * поток) возвращает дескриптор файла для ФАЙЛА *, ФАЙЛ * fdopen (интервал fildes, символ константы * режим) создает ФАЙЛ * из дескриптора файла.

Будьте осторожны, когда смешивание буферизовало и небуферизированный IO, так как Вы потеряете то, что находится в Вашем буфере, когда Вы не сбрасываете его со сбросом ().

4
ответ дан 18 December 2019 в 05:40
поделиться

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

Один пример, который приходит на ум, состоит в том, чтобы работать вокруг ошибки в более старой версии solaris, который сделал сбой fopen после того, как 256 файлов были открыты. Это было то, потому что они ошибочно использовали неподписанный символ для fd поля в их реализации ФАЙЛА структуры вместо интервала. Но это было очень конкретным случаем.

2
ответ дан 18 December 2019 в 05:40
поделиться

fopen и его кузены буферизуются. открытый, читайте, и запись не буферизуется. Ваше приложение может или не может заботиться.

fprintf и scanf имеют более богатый API, который позволяет Вам читать и писать файлы форматированного текста. считайте и запишите использованию фундаментальные массивы байтов. Преобразования и форматирование должны быть ручной работы.

Различие между дескрипторами файлов и (ФАЙЛ *) действительно несущественно.

Randy

0
ответ дан 18 December 2019 в 05:40
поделиться

Да. Когда Вам нужен дескриптор низкого уровня.

В операционных системах UNIX можно обычно обмениваться дескрипторами файлов и сокетами.

Кроме того, дескрипторы низкого уровня делают для лучшей совместимости ABI, чем указатели ФАЙЛА.

3
ответ дан 18 December 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: