Bug de la fonction system en C :-(
Bonjour tout le monde !
En cours, je suis sur des petits projets pour mon BTS... Or l'un d'eux va me rendre zinzin :aie:
Je pense que la commande system () en est la source, mais comment résoudre ce problème ? Je n'ai pas la réponse. C'est pourquoi je viens à vous :D
Mon programme permet de gérer les ordinateurs d'un réseau : il stock dans un fichier les données (adresse IP, nom du poste etc.) et l'une de ses fonctions consiste à effectuer un ping pour connaître l'état de la machine (en ligne / hors ligne).
Pour cela, j'utilise la fonction system... Mais quelque chose de pas cool se produit ; explications :
Voici mon code source :
Code:
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
| void tester (char* fichierIP, char* fichierOK, char* fichierNOK)
{
Ordi* TabOrdi = chargerFichier(fichierIP);
Ordi TabOrdiok[100];
Ordi TabOrdiNok[100];
int i = 0;
int resultat = 0;
char cmd[50];
for (i=0;i <= nbreElement;i++) // nbreElement contient le nombre d'enregistrement du fichierIP
{
printf("---------------\n");
// Je crée ma commande de ping et la stock dans cmd
sprintf(cmd, "ping -n 1 %d.%d.%d.%d > NULL", TabOrdi[i].IPOrdi.ip1, TabOrdi[i].IPOrdi.ip2, TabOrdi[i].IPOrdi.ip3, TabOrdi[i].IPOrdi.ip4);
// Je test
printf("cmds : %s\n", cmd);
// J'exécute ma commande et récupère dans "resultat" le code retourné par system()
resultat = system (cmd);
// J'affiche ce code résultat (pour voir si tout fonctionne)
printf("resultat : %d\n", resultat);
}
} |
Et là, voici le résultat ! Pas très jolie ...
Citation:
---------------
cmds : ping -n 1 123.12.123.10 > NULL
resultat : 0
---------------
cmds : ping -n 1 4980802.1999633846.1988581918.48 > NULL
resultat : 1
---------------
cmds : ping -n 1 0.0.2679004.1988581993 > NULL
resultat : 1
---------------
cmds : ping -n 1 0.0.0.0 > NULL
resultat : 1
---------------
cmds : ping -n 1 1988583728.88.1988583756.0 > NULL
resultat : 1
---------------
cmds : ping -n 1 0.2678220.0.0 > NULL
resultat : 1
---------------
cmds : ping -n 1 0.0.0.0 > NULL
resultat : 1
Comme on peut voir mes adresses IP sont pas très... Bref ! Y'a un souci !
Je commente la ligne où je fais mon system ()
Code:
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
| void tester (char* fichierIP, char* fichierOK, char* fichierNOK)
{
Ordi* TabOrdi = chargerFichier(fichierIP);
Ordi TabOrdiok[100];
Ordi TabOrdiNok[100];
int i = 0;
int resultat = 0;
char cmd[50];
for (i=0;i <= nbreElement;i++) // nbreElement contient le nombre d'enregistrement du fichierIP
{
printf("---------------\n");
// Je crée ma commande de ping et la stock dans cmd
sprintf(cmd, "ping -n 1 %d.%d.%d.%d > NULL", TabOrdi[i].IPOrdi.ip1, TabOrdi[i].IPOrdi.ip2, TabOrdi[i].IPOrdi.ip3, TabOrdi[i].IPOrdi.ip4);
// Je test
printf("cmds : %s\n", cmd);
// J'exécute ma commande et récupère dans "resultat" le code retourné par system()
//resultat = system (cmd);
// J'affiche ce code résultat (pour voir si tout fonctionne)
printf("resultat : %d\n", resultat);
}
} |
Et là, miracle tout s'affiche correctement ! Mais je n'ai pas de ping de fait !
Citation:
---------------
cmds : ping -n 1 123.12.123.10 > NULL
resultat : 0
---------------
cmds : ping -n 1 192.168.12.3 > NULL
resultat : 0
---------------
cmds : ping -n 1 192.168.13.4 > NULL
resultat : 0
---------------
cmds : ping -n 1 192.168.12.6 > NULL
resultat : 0
---------------
cmds : ping -n 1 192.168.14.5 > NULL
resultat : 0
---------------
cmds : ping -n 1 192.168.14.8 > NULL
resultat : 0
---------------
cmds : ping -n 1 192.168.1.96 > NULL
resultat : 0
Bizarre n'est-ce pas ?
Avez-vous une idée pour solutionner mon problème :cry: ?
Merci d'avance :ccool: