Bonjour,
J'ai souvent le besoin de lancer des processus à partir de mes codes utilisant GTK. Pour ce faire, j'utilise fréquemment g_spawn_command_line_sync() en encapsulant la ligne de commande (avec ses arguments) dans une chaine de caractères, et ça marche bien.
Voilà qu'aujourd'hui, j'ai besoin de faire la même chose, mais le process que je lance est "bavard" en crachant plein de résultats sur la console dont je n'ai aucune utilité. Je voudrais donc lancer ce process en éteignant ces sorties inutiles (l’équivalent de "> /dev/null" sur linux, ou bien "> NUL" sous Windows). J'ai bien essayé de rajouter justement "> NUL" (je suis sous Windows) dans la chaine lancée, mais ça ne fait rien du tout.
En creusant la doc de la Glib, j'ai découvert que je pouvais m'en sortir en utilisant plutot g_spawn_sync() (qui est en fait utilisé par g_spawn_command_line_sync()), mais je n'arrive pas à m'en sortir.
Voici rapidement et très schématiquement ce que je fais :
Le code compile et tourne sans aucun problème ni message d'erreur. En revanche, l'instruction n'est pas lancée (par exemple elle doit créer des fichiers qui ne sont pas créés).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 /* la chaine commande (pointeur sur un char) contient l'instruction à lancer avec tout ses arguments */ char tempo[2][1000]; (void)strcpy(tempo[0],commande), tempo[1][0]='\0'; g_spawn_sync (NULL, tempo, NULL, G_SPAWN_STDOUT_TO_DEV_NULL|G_SPAWN_STDERR_TO_DEV_NULL, NULL, NULL, NULL, NULL, NULL, NULL);
Ai-je loupé quelque chose ?
Merci pour toute aide sur ce point.
Cordialement, Eric.
Partager