Bonjour,

J'utilise assez fréquemment g_spawn_command_line_async() et g_spawn_command_line_sync(), et sans trop de problème. Mais aujourd'hui - et pour un truc en apparence tout bête - je tombe sur un os.. Je veux - par exemple - juste détruire un fichier sous Windows (DOS, commande "del").

J'ai un bout de code comme celui-ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
int flag;
char tempo[100]="nom du fichier", tempo2[100];
(void)sprintf(tempo2,"del %s",tempo);
flag=g_spawn_command_line_async(tempo2,NULL);
(void)printf("%s (%d)\n",tempo2,flag);
Ca ne marche pas, et le flag reste à zéro (erreur).

J'ai essayé de travailler sur les guillemets (le nom du fichier contient des espaces), avec, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
(void)sprintf(tempo2,"\"del %s\"",tempo);
ou bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
(void)sprintf(tempo2,"del \"%s\"",tempo);
etc. Le flag reste définitivement à zéro (erreur) et l'instruction n'est pas exécutée. Alors qu'elle s'exécute bien si je la lance "à la main" "en direct".

J'ai l'impression qu'il s'agit d'une bête étourderie de ma part (j'arrive à faire fonctionner cette affaire dans des cas bien plus alambiqués), mais j'ai beau chercher, je ne trouve pas.

Une idée?

Merci d'avance pour toute aide sur ce point.

Cordialement, Eric.