1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| static void func_mychildprocess (GPid pid, int status, gpointer data)
{
/*...*/
}
gboolean myCBclicked (GtkWidget *widget, gpointer data)
{
gboolean b;
GError *err = NULL;
GPid mypid = 0;
gchar *command[3];
command[0] = "open"; /* sous MS Windows uniquement */
command[1] = une_url; /* en UTF8 */
command[2] = NULL; /* doit être NULL-terminé */
b = g_spawn_async(
NULL, /* le defaut devrait convenir */
command,
NULL, /* l'environnement hérite du parent, sinon à définir */
G_SPAWN_DO_NOT_REAP_CHILD|G_SPAWN_SEARCH_PATH, /* search_path pour chercher l'exe du browser dans le PATH, le premier flag est peut-être inutile ici */
NULL, /* fonction à lancer avant la commande */
data,
&mypid, /* retourne le pid enfant (si succès) */
&err
);
if (!b)
{
/* errur */
}
/* si G_SPAWN_DO_NOT_REAP_CHILD est ajouté : */
g_child_watch_add (mypid, (GChildWatchFunc) func_mychildprocess, NULL);
return FALSE; /* ou TRUE */
} |
Partager