OPEN_MEMSTREAM - Linux手册页

时间:2019-08-20 18:00:57  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2020-06-09

名称

open_memstream,open_wmemstream-打开动态内存缓冲区流

语法

#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():

Since glibc 2.10:
_POSIX_C_SOURCE>= 200809L
Before glibc 2.10:
_GNU_SOURCE

说明

open_memstream()函数打开一个流,用于写入内存缓冲区。该函数动态分配缓冲区,并且缓冲区会根据需要自动增长。最初,缓冲区的大小为零。关闭流后,调用方应释放(3)此缓冲区。

ptr和sizeloc指向的位置分别用于报告当前位置和缓冲区的大小。每次刷新流(fflush(3))和关闭流时(fclose(3)),这些指针引用的位置都会更新。这些值仅在调用方在流上不执行任何进一步输出的情况下才保持有效。如果执行进一步的输出,则在尝试访问这些值之前必须再次刷新流。

空字节保留在缓冲区的末尾。该字节不包含在sizeloc中存储的大小值中。

流保持当前位置的概念,该位置最初为零(缓冲区的开始)。每个写操作都会隐式调整缓冲区位置。可以使用fseek(3)或fseeko(3)显式更改流的缓冲区位置。将缓冲区位置移至已写入数据的末尾,以空格填充空白字符。

open_wmemstream()与open_memstream()类似,但是对宽字符而不是字节进行操作。

返回值

成功完成后,open_memstream()和open_wmemstream()返回FILE指针。否则,将返回NULL并将errno设置为指示错误。

版本

open_memstream()在glibc 1.0.x中已经可用。从glibc 2.4开始,open_wmemstream()可用。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
open_memstream(),
open_wmemstream
Thread safetyMT-Safe

遵循规范

POSIX.1-2008。这些功能未在POSIX.1-2001中指定,并且在其他系统上也未广泛使用。

备注

没有与这些函数返回的文件流关联的文件描述符(即fileno(3)如果在返回的流上调用将返回错误)。

BUGS

在2.7版之前的glibc中,寻找经过open_memstream()创建的流的末尾不会扩大缓冲区;而是fseek(3)调用失败,返回-1。

示例

参见fmemopen(3)。

另外参见

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

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/