结构

GLibIOChannel

描述 [源代码]

struct GIOChannel {
  /* No available fields */
}

GIOChannel 数据类型旨在提供一种便携式的方法来使用文件描述符、管道和套接字,并将它们集成到主事件循环中(请参阅 GMainContext)。目前,在 UNIX 平台上提供完整的支持;而对 Windows 的支持只部分完成。

要在 UNIX 系统上创建一个新的 GIOChannel,请使用 g_io_channel_unix_new()。它适用于普通文件描述符、管道和套接字。或者,可以使用 g_io_channel_new_file() 以系统无关的方式为文件创建通道。

一旦创建了 GIOChannel,就可以使用 g_io_channel_read_chars()g_io_channel_write_chars()g_io_channel_seek_position()g_io_channel_shutdown() 函数以通用方式使用它。

要将 GIOChannel 添加到主事件循环,请使用 g_io_add_watch()g_io_add_watch_full()。在此处,指定在 GIOChannel 上感兴趣的事件,并提供在这些事件发生时要调用的函数。

GIOChannel 实例的初始引用计数为 1。可以分别使用 g_io_channel_ref()g_io_channel_unref() 来递增或递减引用计数。当引用计数降至 0 时,GIOChannel 将被释放。(但不会自动关闭,除非它使用 g_io_channel_new_file() 创建。)使用 g_io_add_watch()g_io_add_watch_full() 会增加通道的引用计数。

新函数 g_io_channel_read_chars()g_io_channel_read_line()g_io_channel_read_line_string()g_io_channel_read_to_end()g_io_channel_write_chars()g_io_channel_seek_position()g_io_channel_flush() 不应与已弃用的函数 g_io_channel_read()g_io_channel_write()g_io_channel_seek(),使用相同的频道混合使用。

构造函数

g_io_channel_new_file

使用模式 mode 将文件 filename 作为 GIOChannel 打开。当对该频道的最后一个引用被解除时,此频道将被关闭,因此不需要调用 g_io_channel_close()(尽管执行此操作不会导致问题,只要在关闭频道后不尝试访问该频道即可)。

g_io_channel_unix_new

给定文件描述符,创建新的 GIOChannel。在 UNIX 系统上,这适用于普通文件、管道和插槽。

函数

g_io_channel_error_from_errno

errno 错误号转换为 GIOChannelError

g_io_channel_error_quark
没有可用的说明。

实例方法

g_io_channel_close

关闭 IO 频道。任何待写入的挂起数据都将被刷新,忽略错误。在使用 g_io_channel_unref() 解除最后一个引用之前,此频道将不会被释放。

已弃用:2.2 

g_io_channel_flush

刷新 GIOChannel 的写入缓冲区。

g_io_channel_get_buffer_condition

此函数返回一个 GIOCondition,具体取决于 GIOChannel 内部的内部缓冲区中是否存在要读取的数据/要写入数据的空间。只能设置标志 G_IO_ING_IO_OUT

g_io_channel_get_buffer_size

获取缓冲区大小。

g_io_channel_get_buffered

返回 channel 是否已缓冲。

g_io_channel_get_close_on_unref

返回与 channel 关联的文件/插槽/其他内容是否将在 channel 收到其最终未引用且被销毁时关闭。由 g_io_channel_new_file() 创建的频道的默认值为 TRUE,所有其他频道的默认值为 FALSE

g_io_channel_get_encoding

获取该频道的输入/输出编码。内部编码始终为 UTF-8。编码 NULL 使该频道对二进制数据安全。

g_io_channel_get_flags

获取 GIOChannel 的当前标志,包括只读标志,如 G_IO_FLAG_IS_READABLE

g_io_channel_get_line_term

这会返回 GIOChannel 用来确定文件中换行位置的字符串。值 NULL 表示自动检测。自 2.84 版起,返回值始终为零结尾。

g_io_channel_init

初始化 GIOChannel 结构体。

g_io_channel_read

GIOChannel 读取数据。

已弃用:2.2 

g_io_channel_read_chars

用新的 API 替换 g_io_channel_read()

g_io_channel_read_line

GIOChannel 读一行(包括终止字符)到新分配的字符串中。如果返回为 G_IO_STATUS_NORMALstr_return 将包含已分配的内存。

g_io_channel_read_line_string

GIOChannel 读一行,使用 GString 作为缓冲区。

g_io_channel_read_to_end

读取文件的所有剩余数据。

g_io_channel_read_unichar

channel 读取一个 Unicode 字符。无法在编码为 NULL 的频道上调用此函数。

g_io_channel_ref

增加 GIOChannel 的引用计数。

g_io_channel_seek

设置 GIOChannel 中的当前位置,类似于标准库函数 fseek()。

已弃用:2.2 

g_io_channel_seek_position

使用新 API 替换 g_io_channel_seek()

g_io_channel_set_buffer_size

设置缓冲大小。

g_io_channel_set_buffered

只有当通道的编码为 NULL 时才能设置缓冲状态。对于任何其他编码,必须对通道进行缓冲。

g_io_channel_set_close_on_unref

GIOChannel 数据结构的最终未引用状态下是否关闭通道。由 g_io_channel_new_file() 创建的通道的默认值为 TRUE,而所有其他通道的默认值为 FALSE

g_io_channel_set_encoding

设置通道的输入/输出编码。内部编码始终是 UTF-8。外部文件的默认编码为 UTF-8。

g_io_channel_set_flags

channel 中的(可写)标志设置为(flags & G_IO_FLAG_SET_MASK)。

g_io_channel_set_line_term

这会设置 GIOChannel 用于确定文件中何处发生换行符的字符串。

g_io_channel_shutdown

关闭 IO 通道。如果 flushTRUE,将会刷新任何待写数据。必须到最后一个引用使用 g_io_channel_unref() 移除后该通道才会被释放。

g_io_channel_unix_get_fd

返回 GIOChannel 的文件描述符。

g_io_channel_unref

递减 GIOChannel 的引用计数。

g_io_channel_write

将数据写入 GIOChannel

已弃用:2.2 

g_io_channel_write_chars

使用新 API 替换 g_io_channel_write()

g_io_channel_write_unichar

将一个 Unicode 字符写入 channel。无法在编码为 NULL 的通道上调用此函数。