Bonjour tout le monde !

En cours, je suis sur des petits projets pour mon BTS... Or l'un d'eux va me rendre zinzin

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

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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ...

---------------
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !

---------------
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 ?


Merci d'avance