#1 Le 06/05/2009, à 18:10
- kevlar
[résolu]Executer un programme depuis un autre programme en Gtk
Bonjour à tous !
Pourriez-vous m'indiquer si, depuis une application Gtk, il est possible de lancer un executable, autrement que par les fonctions classiques du C (system, execvp ...)
Merci d'avance.
Je précise, suite à mes recherches préalables sur Internet, que ce n'est pas un problème de "timer" (j'en utilise déjà plusieurs, mais ils sont propres à mon projet).
Concrètement, je souhaite lancer proprement depuis mon projet Gtk, en évitant les failles de sécurité, un programme comme Totem ou xmms.
Dernière modification par kevlar (Le 06/05/2009, à 20:29)
Hors ligne
#2 Le 06/05/2009, à 18:56
- rniamo
Re : [résolu]Executer un programme depuis un autre programme en Gtk
http://www.gtkmm.org/docs/glibmm-2.4/do … l#_details
euh, je viens de voir que t'as question est en C : http://library.gnome.org/devel/glib/sta … esses.html
Dernière modification par rniamo (Le 06/05/2009, à 18:57)
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#3 Le 06/05/2009, à 20:28
- kevlar
Re : [résolu]Executer un programme depuis un autre programme en Gtk
au fait, un très grand merci pour ton aide précédente concernant SDL. !
Hors ligne
#4 Le 06/05/2009, à 20:29
- kevlar
Re : [résolu]Executer un programme depuis un autre programme en Gtk
http://www.gtkmm.org/docs/glibmm-2.4/do … l#_details
euh, je viens de voir que t'as question est en C : http://library.gnome.org/devel/glib/sta … esses.html
et encore un autre merci pour ton lien, qui est exactement ce que je cherchais. C'est fabuleux, on peut progresser d'arrache-pied sur un projet grâce à des personnes comme toi !
Hors ligne
#5 Le 15/05/2009, à 18:06
- kevlar
Re : [résolu]Executer un programme depuis un autre programme en Gtk
Je fais remonter ce fil :
- j'ai compris comment utiliser les fonctions 'spawn' (style g_spawn_async_with_pipes), mais cependant, j'aimerais savoir comment "killer" depuis le programme "père" un processus lancé de cette manière ? La fonction g_spawn_close_pid(pid) peut-elle le faire, sachant que j'ai lu sur le site de Gtk qu'elle n'était pas utile pour les systèmes type Unix ?
Hors ligne
#6 Le 15/05/2009, à 21:13
- kevlar
Re : [résolu]Executer un programme depuis un autre programme en Gtk
Bon, ça marche, je mettrai sans doute un bout de listing ... mais est-ce que quelqu'un connaît un moyen propre à Gtk de "tuer" le processus externe ?
Hors ligne
#7 Le 15/05/2009, à 21:34
- kevlar
Re : [résolu]Executer un programme depuis un autre programme en Gtk
et voilà pour ceux qui en auront besoin un de ces quatre ...
/*****************************
executer un lecteur
video externe
*****************************/
GPid execute_externe(gchar *programme, gchar *arguments)
{
gchar **args;
GPid pid;
GError *error = NULL;
gboolean status;
args = g_new (gchar *, 3);
args[0] = g_strdup (programme); /* programme à lancer */
args[1] = g_strdup (arguments); /* arguments du programm */
args[2] = NULL; /* zéro terminal obligatoire */
status = g_spawn_async_with_pipes ( NULL,
args,
NULL,
(GSpawnFlags) G_SPAWN_SEARCH_PATH
| G_SPAWN_DO_NOT_REAP_CHILD,
NULL,
NULL,
&pid,
NULL,
NULL,
NULL,
&error);
if (status == FALSE)
{
g_free (args[0]);
g_free (args[1]);
g_free (args[2]);
return -1;
}
g_free (args[0]);
g_free (args[1]);
g_free (args[2]);
return pid;
}
/* détruire un programme externe */
int kill_externe(GPid pid)
{
kill(pid,15);
return 0;
}
Dernière modification par kevlar (Le 15/05/2009, à 21:34)
Hors ligne
#8 Le 15/05/2009, à 22:02
- rniamo
Re : [résolu]Executer un programme depuis un autre programme en Gtk
t'as le pid donc tu peux faire un kill(pid,SIGTERM);
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#9 Le 16/05/2009, à 10:09
- kevlar
Re : [résolu]Executer un programme depuis un autre programme en Gtk
Oui, c'est impec ! Au début, ça ne marchait pas, j'avais mal lu la page de man, et j'avais inversé les paramètres de la fonction
Hors ligne