Résultat du ping sur linux en c

lolokiller91 Messages postés 116 Statut Membre -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis actuellement sur linux et j'ai trouvé le moyen d'envoyer un ping avec la commande:

system(" \n ping -c 4 198.0.0.1\n ");



Est qu'il ya un moyen pourque cette commande renvoie 1 si le ping reussi ou 0 si il rate ?

Merci davance

3 réponses

  1. EminoMeneko Messages postés 2499 Statut Membre 318
     
    Les commandes ont une valeur de retour qui est récupérable à partir de la variable $? dans les scripts shell mais en C je ne vois pas comment faire bien que je pense qu'il y ait un moyen.

    En cherchant 3s sur Google il semble que tu n'ais pas lu la doc de la commande system que tu utilises.
    Elle renvoi apparemment le code de retour et il suffit donc de le récupérer dans une variable comme on le ferait pour n'importe quelle valeur de retour d'une fonction de ton code.
    Je fais cette déduction d'après un code visible ici.
    0
  2. lolokiller91 Messages postés 116 Statut Membre 5
     
    J'étais au courant de cette facon de proceder. Mais sur linux ca renvoie des valeur du genre 256 ect....
    Mais en fait je suis trop con, il suffit juste que la variable que est destnée a recupere la valeur soit un variable bool.
    Et comme ca on a un 0 si sa marche et un 1 si sa rate.
    0
    1. EminoMeneko Messages postés 2499 Statut Membre 318
       
      Le problème semble bel et bien évoqué dans ce topic.
      0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    la page man de system décrit la valeur retournée, pour différencier la valeur retournée par la commande d'une erreur d'exécution du shell ou de la commande
    RETURN VALUE
    The value returned is -1 on error (e.g. fork(2) failed), and the return status of the command otherwise. This latter return status is in the format specified in wait(2). Thus, the exit code of the command will be WEXITSTATUS(status). In case /bin/sh could not be executed, the exit status will be that of a command that does exit(127).

    If the value of command is NULL, system() returns non-zero if the shell is available, and zero if not.
    0