mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-28 10:30:03 +01: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
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
static void
|
||||
child_watch_cb (GPid pid,
|
||||
gint status,
|
||||
gpointer data)
|
||||
{
|
||||
GMainLoop* loop = data;
|
||||
|
||||
g_main_loop_quit (loop);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc,
|
||||
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