Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Gnome
Gnome Vos questions sur l'environnement Gnome
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 14/04/2009, 18h05   #1
Futur Membre du Club
 
Inscription : avril 2007
Messages : 62
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 62
Points : 16
Points : 16
Par défaut exécution de ping simultanée

Bonsoir,
dans le cadre de mon stage, je dois réaliser une application en C qui doit enregistrer des adresses IP avec leur MAC dans une BD. L'application doit pouvoir vérifier plusieurs VLAN (une bonne vingtaine avec des masques de sous-réseau différents)

mon problème est le suivant :
j'aimerais bien threader l'application afin qu'elle fonctionne plus vite. Seulement, je remarque que lorsque mon applicationest sur le même VLAN, elle met le même temps d'exécution avec 1 thread ou avec 6 threads.

voici la façon dont je réalise le ping :

Code :
1
2
sprintf(cping,"ping -c %d -s %d -w %d %s",lec->nombre_req,lec->taille_req,lec->temps,ip);
ret=system(cping);
je crois que la fonction "system" n'est pas réentrante. Ce qui (je crois) bloque les threads.

J'aurais bien voulu savoir comment je pourrait faire. J'ai déjà essayé de faire les ping avec les execs. Seulement, avec 6 threads, cela ralenti considérablement la machine.

Est-ce qu'il y aurait un autre moyen?
merci d'avance
Fredonouille
fredonouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2009, 12h09   #2
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 222
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 222
Points : 9 143
Points : 9 143
oui

mettre un & à la fin de la commande.

Cela lance en background. Tu peux donc en lancer 6 d'un coup..(enfin à la suite).
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2009, 13h54   #3
Futur Membre du Club
 
Inscription : avril 2007
Messages : 62
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 62
Points : 16
Points : 16
bonjour souviron,
je te remercie de m'avoir répondu.

je viens d'essayer ta solution. je suis bien d'accord avec toi qu'avec le & les commandes sont envoyée les unes après les autres. Or mon programme me fait des erreurs que je n'avais pas ce matin. Je pense que cela est du au fait qu'il exécute la suite du programme en mettant des valeurs au pif.

Est-ce que les erreurs apparaissent à cause de la fontion "system"? Je dois t'avouer que j'ai des doutes sur la réentrance ce cette fonction.
Fredonouille
fredonouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2009, 15h02   #4
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 222
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 222
Points : 9 143
Points : 9 143
les & lancent en background.

Dans ce cas, system retourne avant la fin de l'exécution de ce qu'il lance.

D'autre part, les processus se lancent dans l'ordre, mais sont exécutés quand le scheduler le décide.

Puisque c'est à peu près ce que tu souhaitais (utiliser au mieux le CPU), il faudrait juste attendre que tous les processus soient terminés avant de continuer...
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2009, 15h04   #5
Futur Membre du Club
 
Inscription : avril 2007
Messages : 62
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 62
Points : 16
Points : 16
Merci de ton aide.

Je suis d'accord avec toi.

Seulement, je n'ai pas l'impression que mon programme fait ses ping plus rapidement.

D'autant plus, lorsque j'ai rajouté le &, mon programme fait un ping sur +/- 80 adresses IP et il plante lorsque je veux récupérer la MAC adresse. Je la récupère grâce à la table arp. En programmation, je fais la même chose que pour l'IP sauf que j'envoie le résultat dans un fichier et je lis ce fichier après.
fredonouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 15h34.


 
 
 
 
Partenaires

Hébergement Web