结构
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_close
关闭 IO 频道。任何待写入的挂起数据都将被刷新,忽略错误。在使用 g_io_channel_unref() 解除最后一个引用之前,此频道将不会被释放。
已弃用:2.2
g_io_channel_get_buffer_condition
此函数返回一个 GIOCondition,具体取决于 GIOChannel 内部的内部缓冲区中是否存在要读取的数据/要写入数据的空间。只能设置标志 G_IO_IN 和 G_IO_OUT。
g_io_channel_get_close_on_unref
返回与 channel 关联的文件/插槽/其他内容是否将在 channel 收到其最终未引用且被销毁时关闭。由 g_io_channel_new_file() 创建的频道的默认值为 TRUE,所有其他频道的默认值为 FALSE。
g_io_channel_read_line
从 GIOChannel 读一行(包括终止字符)到新分配的字符串中。如果返回为 G_IO_STATUS_NORMAL,str_return 将包含已分配的内存。
g_io_channel_set_close_on_unref
在 GIOChannel 数据结构的最终未引用状态下是否关闭通道。由 g_io_channel_new_file() 创建的通道的默认值为 TRUE,而所有其他通道的默认值为 FALSE。
g_io_channel_shutdown
关闭 IO 通道。如果 flush 为 TRUE,将会刷新任何待写数据。必须到最后一个引用使用 g_io_channel_unref() 移除后该通道才会被释放。