Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       open_memstream, open_wmemstream - открывает динамический буфер памяти как поток

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <stdio.h>

       FILE *open_memstream(char **ptr, size_t *sizeloc);

       #include <wchar.h>

       FILE *open_wmemstream(wchar_t **ptr, size_t *sizeloc);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       open_memstream(), open_wmemstream():
           Начиная с glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           До glibc 2.10:
               _BSD_SOURCE

ОПИСАНИЕ

       Функция  open_memstream()  открывает  поток для записи в буфер памяти. Буфер выделяется динамически и при
       необходимости автоматически увеличивается. Первоначально размер буфера равен нулю.После  закрытия  потока
       вызывающий должен освободить буфер с помощью free(3).

       Аргументы ptr и sizeloc используются для определения текущего положения и размера буфера, соответственно.
       Положение  обновляется  при  каждом  сбросе  потока  (fflush(3)) и его закрытии (fclose(3)). Эти значения
       остаются корректными, пока вызывающий не произведёт вывод в поток. После выполнения вывода, перед тем как
       обращаться к этим переменным, поток снова должен быть сброшен.

       Байт null поддерживается в конце буфера. Этот байт  не  учитывается  в  значении  размера,  хранящемся  в
       sizeloc.

       Для  потока  существует понятие текущего положения, которое изначально равно нулю (начало буфера). Каждая
       операция записи неявно изменяет положение буфера. Положение буфера потока можно изменить явно  с  помощью
       fseek(3) или fseeko(3). Перемещение положения буфера за конец уже записанных данных приводит к заполнению
       промежутка символами null.

       Функция open_wmemstream() похожа на open_memstream(), но работает с широкими символами, а не с байтами.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       При  успешном  выполнении  open_memstream()  и open_wmemstream() возвращается указатель FILE. В противном
       случае возвращается NULL и errno присваивается код ошибки.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ ИнтерфейсАтрибутЗначение │
       ├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │ open_memstream(), open_wmemstream()                                 │ Безвредность в нитях │ MT-Safe  │
       └─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       POSIX.1-2008.

ИСТОРИЯ

       open_memstream()
              glibc 1.0.x.

       open_wmemstream()
              glibc 2.4.

ПРИМЕЧАНИЯ

       У файлового потока, возвращаемого этими  функциями, отсутствует файловый дескриптор (т. е., если файловый
       поток передать в fileno(3), то произойдёт ошибка).

ОШИБКИ

       Before glibc 2.7, seeking past the end of a stream created by  open_memstream()   does  not  enlarge  the
       buffer; instead the fseek(3) call fails, returning -1.

ПРИМЕРЫ

       Смотрите fmemopen(3).

СМОТРИТЕ ТАКЖЕ

       fmemopen(3), fopen(3), setbuf(3)

ПЕРЕВОД

       Русский  перевод  этой  страницы  руководства  разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>,
       Konstantin   Shvaykovskiy   <kot.shv@gmail.com>,   Yuri   Kozlov   <yuray@komyakino.ru>,   Иван    Павлов
       <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                open_memstream(3)