Provided by: manpages-ru-dev_4.26.0-1_all 

НАИМЕНОВАНИЕ
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)