Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1446 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C]Comment recuperer la valeur ke renvoie un ping sous linux ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C]Comment recuperer la valeur ke renvoie un ping sous linux ???

n°173621
raph93
Posté le 09-07-2002 à 14:10:22  profilanswer
 

Code :
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int result;
  5. result = system("ping -c 4 127.0.0.1" );
  6. printf ("%d" ,  result);
  7. }


 
j'ai fait ca, mais ca lance juste la commande PING ca recupere pas la valeur


Message édité par raph93 le 09-07-2002 à 14:11:05
mood
Publicité
Posté le 09-07-2002 à 14:10:22  profilanswer
 

n°173665
ioio
./ioio --force --nodeps
Posté le 09-07-2002 à 14:46:47  profilanswer
 

Normal que ça ne récupère pas la valeur. La fonction system() ne sert qu'a executer des programmes dans ton systemeet ne renvoi en aucun cas le résultat de ta commande. (ex system("calc.exe" ) va te lancer la calculatrice windows et renverra 0 pour dire que ça s'est bien déroulé)
 
pour récuperer la chaine de ton ping tu peut rediriger le resultat de la commande dans un fichier temporaire :
 
system("ping -c 4 127.0.0.1 > temp" );
 
et ensuite tu traites le fichier 'temp' dans ton programme.


Message édité par ioio le 09-07-2002 à 14:48:05
n°173673
raph93
Posté le 09-07-2002 à 14:55:31  profilanswer
 

ioio a écrit a écrit :

Normal que ça ne récupère pas la valeur. La fonction system() ne sert qu'a executer des programmes dans ton systemeet ne renvoi en aucun cas le résultat de ta commande. (ex system("calc.exe" ) va te lancer la calculatrice windows et renverra 0 pour dire que ça s'est bien déroulé)
 
pour récuperer la chaine de ton ping tu peut rediriger le resultat de la commande dans un fichier temporaire :
 
system("ping -c 4 127.0.0.1 > temp" );
 
et ensuite tu traites le fichier 'temp' dans ton programme.




 
t'as pas compris , Linux contrairement a windows est censé renvoyer une valeur selon l'etat du ping
 
ex:  
 
1 = la machine reponds  
2 = la machine ne reponds pas  

n°173675
ioio
./ioio --force --nodeps
Posté le 09-07-2002 à 14:58:49  profilanswer
 

a bon ? a je savais pas ça pour le ping ... désolé

n°173683
raph93
Posté le 09-07-2002 à 15:04:07  profilanswer
 

ioio a écrit a écrit :

a bon ? a je savais pas ça pour le ping ... désolé




 
no problem  
 
merci kan meme  :jap:

n°173696
Jar Jar
Intaigriste
Posté le 09-07-2002 à 15:19:54  profilanswer
 

Je viens d'essayer ton programme, il marche très bien.
 
Y'a ptêt juste le printf("%d\n" ) à mettre.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°173722
raph93
Posté le 09-07-2002 à 15:50:51  profilanswer
 

Jar Jar a écrit a écrit :

Je viens d'essayer ton programme, il marche très bien.
 
Y'a ptêt juste le printf("%d\n" ) à mettre.




 
toi non plus je crois ke t'as bien compris  :D  
 
je cherche a recuperer une valeur, et non pas le ping  :sol:

n°173749
Jar Jar
Intaigriste
Posté le 09-07-2002 à 16:09:09  profilanswer
 

raph93 a écrit a écrit :

toi non plus je crois ke t'as bien compris  :D  
 
je cherche a recuperer une valeur, et non pas le ping  :sol:


Bah soit tu fais un popen et tu parses la sortie (problème, ça risque de merder grave en fonction de la version), soit tu regardes le source du ping de netkit, ça fait 1000 lignes (dont peu doivent servir au ping proprement dit), et tu repompes ce dont tu as besoin.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°174756
raph93
Posté le 11-07-2002 à 00:50:28  profilanswer
 

:bounce:


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°174758
koulip31
Posté le 11-07-2002 à 00:53:11  profilanswer
 

raph93 a écrit a écrit :

 :bounce:  




jar jar ta donné une solution bourinne certe mais implementable  

mood
Publicité
Posté le 11-07-2002 à 00:53:11  profilanswer
 

n°175421
Fork
Posté le 11-07-2002 à 21:19:36  profilanswer
 

Jar Jar a écrit a écrit :

Je viens d'essayer ton programme, il marche très bien.
 
Y'a ptêt juste le printf("%d\n" ) à mettre.




 
Effectivement,sous un unix-like il faut un '\n' dans ton printf. Ton programme récupère bien la valeur dans la variable "result", mais rien ne s'affiche à l'écran parce que le tampon du printf n'est affiché que lorsqu'on fait un retour à la ligne.

n°175512
Beretta Ve​xe
Posté le 12-07-2002 à 01:05:20  profilanswer
 

Jar Jar a écrit a écrit :

Bah soit tu fais un popen et tu parses la sortie (problème, ça risque de merder grave en fonction de la version), soit tu regardes le source du ping de netkit, ça fait 1000 lignes (dont peu doivent servir au ping proprement dit), et tu repompes ce dont tu as besoin.




 
Mauvaise solution Ping a un suid root, et je ne pence pas que le programme de raph93 soit destiné au root.

n°175655
Jar Jar
Intaigriste
Posté le 12-07-2002 à 11:40:53  profilanswer
 

beretta vexe a écrit a écrit :

Mauvaise solution Ping a un suid root, et je ne pence pas que le programme de raph93 soit destiné au root.


Le problème, c'est bien qu'ICMP n'est réservé qu'à root, puisqu'il est possible de forger n'importe quel paquet avec.
 
Il existe une possibilité de faire des pings en TCP, faudrait ptêt regarder de ce côté.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°175695
bienf
Posté le 12-07-2002 à 12:40:14  profilanswer
 

Citation :


Il existe une possibilité de faire des pings en TCP, faudrait ptêt regarder de ce côté.

 
 
Non, un ping utilise un paquet ICMP echo ...un point c tout !!
Tu en confondrais pas avec les traceroutes qui eux peuvent se faire en udp, tcp, ou icmp du car les paquets envoyés ont juste un TTL modifié et les réponse sont des paquet ICMP Time-exceeded...
 
Si je me trompes pas, tout programme unix ressort une valuer de retour égale à 0 si le process se tremeine bien et différents de 0 si il ya aune erreur ...


---------------
------
n°175814
Beretta Ve​xe
Posté le 12-07-2002 à 16:28:05  profilanswer
 

bienf a écrit a écrit :

 

Citation :


Il existe une possibilité de faire des pings en TCP, faudrait ptêt regarder de ce côté.

 
Si je me trompes pas, tout programme unix ressort une valuer de retour égale à 0 si le process se tremeine bien et différents de 0 si il ya aune erreur ...




 
En Bash, en effet mais j'ai jamais testé avec system() (on m'a dit que ca marché avec perl, alors pourquoi pas avec du C ) .

n°175815
airbag
There's no life before coffee
Posté le 12-07-2002 à 16:35:12  profilanswer
 

Ce problème ne peut-il pas se régler à coup de grep et de cut ? Il faut obligatoirement du C ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C]Comment recuperer la valeur ke renvoie un ping sous linux ???

 

Sujets relatifs
Travail avec awk pour récupérer des infos!!![PHP] Comment recuperer la valeur retourner par un ping sous Linux
Sous Linux - Que faut il pour faire du graphique[ASP] Y'a moyen de faire de mettre de l' ASP sur un serveur Linux ??
[PHP] [noob] récupérer un argument donné dans l'URL [résolu][C,C++] recuperer les infos du processeur ...
[ASM] Compilateur sous linux 
Plus de sujets relatifs à : [C]Comment recuperer la valeur ke renvoie un ping sous linux ???


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR