.\" -*- coding: UTF-8 -*- .\" Copyright 2005, 2012, 2016 Michael Kerrisk .\" .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) .\" Distributed under the GPL. .\" %%%LICENSE_END .\" .\" 2008-12-04, Petr Baudis : Document open_wmemstream() .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH OPEN_MEMSTREAM 3 "9 июня 2020 г." GNU "Руководство программиста Linux" .SH ИМЯ open_memstream, open_wmemstream \- открывает динамический буфер памяти как поток .SH СИНТАКСИС .nf \fB#include \fP .PP \fBFILE *open_memstream(char **\fP\fIptr\fP\fB, size_t *\fP\fIsizeloc\fP\fB);\fP \fB#include \fP .PP \fBFILE *open_wmemstream(wchar_t **\fP\fIptr\fP\fB, size_t *\fP\fIsizeloc\fP\fB);\fP .fi .PP .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .PP \fBopen_memstream\fP(), \fBopen_wmemstream\fP(): .PD 0 .ad l .RS 4 .TP 4 Начиная с glibc 2.10: _POSIX_C_SOURCE\ >=\ 200809L .TP До glibc 2.10: _GNU_SOURCE .RE .ad .PD .SH ОПИСАНИЕ Функция \fBopen_memstream\fP() открывает поток для записи в буфер памяти. Буфер выделяется динамически и при необходимости автоматически увеличивается. Первоначально размер буфера равен нулю.После закрытия потока вызывающий должен освободить буфер с помощью \fBfree\fP(3). .PP Аргументы \fIptr\fP и \fIsizeloc\fP используются для определения текущего положения и размера буфера, соответственно. Положение обновляется при каждом сбросе потока (\fBfflush\fP(3)) и его закрытии (\fBfclose\fP(3)). Эти значения остаются корректными, пока вызывающий не произведёт вывод в поток. После выполнения вывода, перед тем как обращаться к этим переменным, поток снова должен быть сброшен. .PP Байт null поддерживается в конце буфера. Этот байт \fIне\fP учитывается в значении размера, хранящемся в \fIsizeloc\fP. .PP Для потока существует понятие текущего положения, которое изначально равно нулю (начало буфера). Каждая операция записи неявно изменяет положение буфера. Положение буфера потока можно изменить явно с помощью \fBfseek\fP(3) или \fBfseeko\fP(3). Перемещение положения буфера за конец уже записанных данных приводит к заполнению промежутка символами null. .PP Функция \fBopen_wmemstream\fP() похожа на \fBopen_memstream\fP(), но работает с широкими символами, а не с байтами. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении \fBopen_memstream\fP() и \fBopen_wmemstream\fP() возвращается указатель \fIFILE\fP. В противном случае возвращается NULL и \fIerrno\fP присваивается код ошибки. .SH ВЕРСИИ Функция \fBopen_memstream\fP() была доступны уже в glibc 1.0.x. Функция \fBopen_wmemstream\fP() доступна в glibc начиная с версии 2.4. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lb lb lb l l l. Интерфейс Атрибут Значение T{ \fBopen_memstream\fP(), .br \fBopen_wmemstream\fP T} Безвредность в нитях MT\-Safe .TE .sp 1 .SH "СООТВЕТСТВИЕ СТАНДАРТАМ" POSIX.1\-2008. Эти функции не определены в POSIX.1\-2001 и не широко распространены в других системах. .SH ЗАМЕЧАНИЯ У файлового потока, возвращаемого этими функциями, отсутствует файловый дескриптор (т. е., если файловый поток передать в \fBfileno\fP(3), то произойдёт ошибка). .SH ДЕФЕКТЫ .\" http://sourceware.org/bugzilla/show_bug.cgi?id=1996 В glibc до версии 2.7 перемещение за конец потока, созданного \fBopen_memstream\fP(), не приводило к увеличению буфера; вместо этого вызов \fBfseek\fP(3) завершался с ошибкой, возвращая \-1. .SH ПРИМЕРЫ Смотрите \fBfmemopen\fP(3). .SH "СМ. ТАКЖЕ" \fBfmemopen\fP(3), \fBfopen\fP(3), \fBsetbuf\fP(3) .SH ЗАМЕЧАНИЯ Эта страница является частью проекта Linux \fIman\-pages\fP версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу \%https://www.kernel.org/doc/man\-pages/. .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Azamat Hackimov , Konstantin Shvaykovskiy , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .