mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-31 04:43:06 +02:00
glib/gtester.c:Spawn a process async and quit gtester after the child process exited
svn path=/trunk/; revision=5888
This commit is contained in:
parent
66bef13e6f
commit
0217653b80
@ -21,10 +21,55 @@
|
|||||||
* USA
|
* USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
|
static void
|
||||||
|
child_watch_cb (GPid pid,
|
||||||
|
gint status,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
GMainLoop* loop = data;
|
||||||
|
|
||||||
|
g_main_loop_quit (loop);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc,
|
main (int argc,
|
||||||
char**argv)
|
char**argv)
|
||||||
{
|
{
|
||||||
return 0;
|
GMainLoop* loop;
|
||||||
|
GError * error = NULL;
|
||||||
|
GPid pid = 0;
|
||||||
|
gchar * working_folder;
|
||||||
|
gchar * child_argv[] = {
|
||||||
|
"cat",
|
||||||
|
"/proc/cpuinfo",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
working_folder = g_get_current_dir ();
|
||||||
|
g_spawn_async (working_folder,
|
||||||
|
child_argv, NULL /* envp */,
|
||||||
|
G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH,
|
||||||
|
NULL, NULL,
|
||||||
|
&pid,
|
||||||
|
&error);
|
||||||
|
g_free (working_folder);
|
||||||
|
|
||||||
|
if (error)
|
||||||
|
{
|
||||||
|
g_error ("Couldn't execute child: %s", error->message);
|
||||||
|
/* doesn't return */
|
||||||
|
}
|
||||||
|
|
||||||
|
loop = g_main_loop_new (NULL, FALSE);
|
||||||
|
|
||||||
|
g_child_watch_add (pid,
|
||||||
|
child_watch_cb,
|
||||||
|
loop);
|
||||||
|
|
||||||
|
g_main_loop_run (loop);
|
||||||
|
g_main_loop_unref (loop);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user