Bonjour
J'ai trouvé comment lancer un programme externe en C et récupérer la main après : la fonction système.
Le programme que je lance renvoie une sortie sous forme de int. J'aimerai récupérer cette sortie. Je fais comment ?
Bonjour
J'ai trouvé comment lancer un programme externe en C et récupérer la main après : la fonction système.
Le programme que je lance renvoie une sortie sous forme de int. J'aimerai récupérer cette sortie. Je fais comment ?
Modérateur Mageia/Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels : xrandr, algorigramme et C, xml et gtk...
Le code retourne par le programme est retourne par system.
Si c'est sous forme d'IO sur la sortie standard, popen().
Le problème c'est que je ne récupère pas le code prévu...
À la fin du programme appelé je récupère autre chose...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 num=system("./combien_SDL Lequel\\ enlever\\ \\? 1"); printf("%d %hu %hd %lu %ld\n",num,num,num,num,num);
0 0 0 0 0
À la fin de combien_SDL, j'ai :J'ai bien le bon nombre qui s'affiche. C'est à dire autre chose que le 0 que je récupère !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 printf("%d",retour); return retour;
Petite modif dans le retour ?? pourquoi ??
affiche ce que je souhaite...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 printf("%d\n",num>>8); printf("%hd\n",num>>8); printf("%ld\n",num>>8); printf("%u\n",num>>8); printf("%hu\n",num>>8); printf("%lu\n",num>>8);
Je suis à la rue !
Modérateur Mageia/Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels : xrandr, algorigramme et C, xml et gtk...
Je ne voudrais pas d'IO sur la sortie standard !
Si c'est bien que que je crois, l'IO ce serait récupérer ce qu'a mis le printf.
Ce printf n'est là que pour le débogage. Je souhaite récupérer la sortie du return.
Et la sortie du return, ce n'est tout de même pas de I/O ? Si ?
Modérateur Mageia/Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels : xrandr, algorigramme et C, xml et gtk...
man waitpid pour WEXITSTATUS, il faudrait aussi utiliser WIFEXITED pour faire un controle d'erreur plus fin des erreurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include <stdlib.h> #include <stdio.h> #include <sys/wait.h> int main() { int res = system("exit 0"); int res2 = system("exit 42"); printf("%d, %d\n", WEXITSTATUS(res), WEXITSTATUS(res2)); return 0; }
Merci !
Pour ce que je compte faire, c'est bon ! Mais un test me montre que je récupère le reste de mon retour par 256 ! Mon retour ne dépasse pas ce nombre![]()
Modérateur Mageia/Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels : xrandr, algorigramme et C, xml et gtk...
Partager