The
GIOChannel data type aims to provide a portable method
for using file descriptors, pipes, and sockets, and integrating them
into the main event loop (see
[struct
gLib.MainContext]). Currently, full support is
available on UNIX platforms; support for Windows is only partially
complete.
To create a new
GIOChannel on UNIX systems use
iOChannelUnixNew. This works for plain file descriptors, pipes
and sockets. Alternatively, a channel can be created for a file in a
system independent manner using
iOChannelNewFile.
Once a
GIOChannel has been created, it can be used in a
generic manner with the functions
iOChannelReadChars,
iOChannelWriteChars,
iOChannelSeekPosition, and
iOChannelShutdown.
To add a
GIOChannel to the main event loop, use
ioAddWatch or
GLib.io_add_watch_full. Here you
specify which events you are interested in on the
GIOChannel,
and provide a function to be called whenever these events occur.
GIOChannel instances are created with an initial reference
count of 1.
iOChannelRef and
iOChannelUnref can be used
to increment or decrement the reference count respectively. When the
reference count falls to 0, the
GIOChannel is freed. (Though
it isn’t closed automatically, unless it was created using
iOChannelNewFile.) Using
ioAddWatch or
GLib.io_add_watch_full increments a channel’s
reference count.
The new functions
iOChannelReadChars,
iOChannelReadLine,
IOChannel.
read_line_string(),
iOChannelReadToEnd,
iOChannelWriteChars,
iOChannelSeekPosition, and
iOChannelFlush should not be
mixed with the deprecated functions
iOChannelRead,
iOChannelWrite, and
iOChannelSeek on the same channel.