函数
GLibMappedFilenew
自:2.8
声明 [源]
GMappedFile*
g_mapped_file_new (
const gchar* filename,
gboolean writable,
GError** error
)
描述 [源]
将文件映射到内存中。在 UNIX 上,这是使用 mmap()
函数。
如果 writable
为 TRUE
,则映射的缓冲区可以被修改,否则修改映射的缓冲区是错误的。对缓冲区的修改对其他映射相同文件的进程不可见,并且不会写回文件。
请注意,底层文件的修改可能会影响 GMappedFile
的内容。因此,只有当文件不会被修改,或者所有对文件的修改都是原子性的(例如使用 g_file_set_contents()
)时,才应使用映射。
如果 filename
是空普通文件的名称,则函数将成功返回空的 GMappedFile
。在其他情况下,如大小为0(例如设备文件,如 /dev/null),error
将设置为 GFileError
值 G_FILE_ERROR_INVAL
。
自:2.8
参数
filename
-
类型:
const gchar%
要加载数据的文件路径,使用 GLib 文件名编码。
数据归调用该函数的所有者所有。 这是一个平台本机字符串,在 Unix 上使用首选操作系统编码,在 Windows 上使用 UTF-8。 writable
-
类型:
gboolean
映射是否应该是可写的。
error
-
类型:
GError **
一个可恢复错误的返回位置。
该参数可以为 NULL
。如果返回位置不为 NULL
,则您必须将其初始化为NULL
GError*
。如果没有错误,函数将保留初始化到 NULL
。如果发生错误,则将设置参数为一个新的 GError
;调用者将保留数据的所有权,并负责释放它。
返回值
类型: GMappedFile
一个新分配的 GMappedFile
,必须使用 g_mapped_file_unref()
释放,或者在映射失败时返回 NULL
。
该函数的调用者保留数据的所有权,并负责释放它。 |