Method
GioApplicationrun
since: 2.28
Declaration [src]
int
g_application_run (
GApplication* application,
int argc,
char** argv
)
Description [src]
Runs the application.
This function is intended to be run from main()
and its return value
is intended to be returned by main(). Although you are expected to pass
the argc
, argv
parameters from main()
to this function, it is possible
to pass NULL
if argv
is not available or commandline handling is not
required. Note that on Windows, argc
and argv
are ignored, and
g_win32_get_command_line()
is called internally (for proper support
of Unicode commandline arguments).
GApplication
will attempt to parse the commandline arguments. You
can add commandline flags to the list of recognised options by way of
g_application_add_main_option_entries(). After this, the
GApplication::handle-local-options
signal is emitted, from which the
application can inspect the values of its GOptionEntrys
.
GApplication::handle-local-options
is a good place to handle options
such as --version
, where an immediate reply from the local process is
desired (instead of communicating with an already-running instance).
A GApplication::handle-local-options
handler can stop further processing
by returning a non-negative value, which then becomes the exit status of
the process.
What happens next depends on the flags: if
G_APPLICATION_HANDLES_COMMAND_LINE
was specified then the remaining
commandline arguments are sent to the primary instance, where a
GApplication::command-line
signal is emitted. Otherwise, the
remaining commandline arguments are assumed to be a list of files.
If there are no files listed, the application is activated via the
GApplication::activate
signal. If there are one or more files, and
G_APPLICATION_HANDLES_OPEN
was specified then the files are opened
via the GApplication::open
signal.
If you are interested in doing more complicated local handling of the
commandline then you should implement your own GApplication
subclass
and override local_command_line(). In this case, you most likely want
to return TRUE
from your local_command_line()
implementation to
suppress the default handling. See
[gapplication-example-cmdline2.c][https://gitlab.gnome.org/GNOME/glib/-/blob/HEAD/gio/tests/gapplication-example-cmdline2.c]
for an example.
If, after the above is done, the use count of the application is zero then the exit status is returned immediately. If the use count is non-zero then the default main context is iterated until the use count falls to zero, at which point 0 is returned.
If the G_APPLICATION_IS_SERVICE
flag is set, then the service will
run for as much as 10 seconds with a use count of zero while waiting
for the message that caused the activation to arrive. After that,
if the use count falls to zero the application will exit immediately,
except in the case that g_application_set_inactivity_timeout()
is in use.
This function sets the prgname (g_set_prgname()), if not already set, to the basename of argv[0].
Much like g_main_loop_run(), this function will acquire the main context for the duration that the application is running.
Since 2.40, applications that are not explicitly flagged as services
or launchers (ie: neither G_APPLICATION_IS_SERVICE
or
G_APPLICATION_IS_LAUNCHER
are given as flags) will check (from the
default handler for local_command_line) if “—gapplication-service”
was given in the command line. If this flag is present then normal
commandline processing is interrupted and the
G_APPLICATION_IS_SERVICE
flag is set. This provides a “compromise”
solution whereby running an application directly from the commandline
will invoke it in the normal way (which can be useful for debugging)
while still allowing applications to be D-Bus activated in service
mode. The D-Bus service file should invoke the executable with
“—gapplication-service” as the sole commandline argument. This
approach is suitable for use by most graphical applications but
should not be used from applications like editors that need precise
control over when processes invoked via the commandline will exit and
what their exit status will be.
Available since: 2.28
Parameters
argc
-
Type:
int
The argc from
main()
(or 0 ifargv
isNULL
). argv
-
Type: An array of
filename
the argv from main(), or `NULL`.
The argument can be NULL
.The length of the array is specified in the argc
argument.The data is owned by the caller of the method. Each element is a platform-native string, using the preferred OS encoding on Unix and UTF-8 on Windows..