
GIO (Gnome Input/Output) is a
library
A library is a collection of materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or digital access (soft copies) materials, and may be a physical location or a vi ...
, designed to present programmers with a modern and usable interface to a
virtual file system
A virtual file system (VFS) or virtual filesystem switch is an abstract layer on top of a more concrete file system. The purpose of a VFS is to allow client applications to access different types of concrete file systems in a uniform way. A VFS ...
. It allows applications to access local and remote files with a single consistent
API, which was designed "to overcome the shortcomings of
GnomeVFS
GnomeVFS (short for GNOME Virtual File System) was an abstraction layer of the GNOME platform for the reading, writing and execution of files. Before GNOME 2.22 GnomeVFS was primarily used by the appropriate versions of Nautilus file manager (rena ...
" and be "so good that developers prefer it over raw
POSIX
The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines both the system- and user-level application programming inte ...
calls."
GIO serves as low-level system library for the
GNOME Shell
GNOME Shell is the graphical shell of the GNOME desktop environment starting with version 3, which was released on April 6, 2011. It provides basic functions like launching applications, switching between windows and is also a widget engine. ...
/
GNOME/
GTK software stack and is being developed by
The GNOME Project
GNOME Project is a community behind the GNOME desktop environment and the software platform upon which it is based. It consists of all the software developers, artists, writers, translators, other contributors, and active users of GNOME. It is n ...
. It is maintained as a separate library, , but it is bundled with
GLib
GLib is a bundle of three (formerly five) low-level system libraries written in C and developed mainly by GNOME. GLib's code was separated from GTK, so it can be used by software other than GNOME and has been developed in parallel ever si ...
. GIO is
free and open-source software
Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
subject to the requirements of the
GNU Lesser General Public License
The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
.
Features
* The abstract file system model of GIO consists of a number of interfaces and base classes for I/O and files.
* There are a number of stream classes, similar to the input and output stream hierarchies that can be found in frameworks like Java.
* There are interfaces related to applications and the types of files they handle.
* There is a framework for storing and retrieving application settings.
* file type detection with xdgmime (xdg = X Desktop Group =
freedesktop.org)
* file monitoring with
inotify
* file monitoring with
FAM
* There is support for network programming, including name resolution, lowlevel socket APIs and highlevel client and server helper classes.
* There is support for connecting to
D-Bus
In computing, D-Bus (short for "Desktop Bus")
is a message-oriented middleware mechanism that allows communication between multiple processes running concurrently on the same machine. D-Bus was developed as part of the freedesktop.org project, ...
, sending and receiving messages, owning and watching bus names, and making objects available on the bus.
Beyond these, GIO provides facilities for file monitoring,
asynchronous I/O
In computer science, asynchronous I/O (also non-sequential I/O) is a form of input/output processing that permits other processing to continue before the transmission has finished. A name used for asynchronous I/O in the Windows API is overlap ...
and filename completion. In addition to the interfaces, GIO provides implementations for the local case. Implementations for various network file systems are provided by the
GVfs
GVfs (abbreviation for GNOME virtual file system) is GNOME's userspace virtual filesystem designed to work with the I/O abstraction of GIO, a library available in GLib since version 2.15.1. It installs several modules that are automatically u ...
package as loadable modules.
See also
*
KIO
KIO (KDE Input/Output) is a system library incorporated into KDE Frameworks 5 and KDE Software Compilation 4. It provides access to files, web sites and other resources through a single consistent API. Applications, such as Konqueror and Do ...
– an analogous KDE library
*
gVFS
GVfs (abbreviation for GNOME virtual file system) is GNOME's userspace virtual filesystem designed to work with the I/O abstraction of GIO, a library available in GLib since version 2.15.1. It installs several modules that are automatically u ...
– a user-space
virtual filesystem relying on ''GIO''
*
GnomeVFS
GnomeVFS (short for GNOME Virtual File System) was an abstraction layer of the GNOME platform for the reading, writing and execution of files. Before GNOME 2.22 GnomeVFS was primarily used by the appropriate versions of Nautilus file manager (rena ...
– the older Gnome library for the same purposes
References
External links
GIO Reference Manual
{{GTK
Applications using D-Bus
C (programming language) libraries
Free computer libraries
Free software programmed in C
GNOME libraries
GTK