IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Gnome Discussion :

exécution de ping simultanée


Sujet :

Gnome

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 615
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 615
    Billets dans le blog
    2
    Par défaut
    oui

    mettre un & à la fin de la commande.

    Cela lance en background. Tu peux donc en lancer 6 d'un coup..(enfin à la suite).

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Par défaut
    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

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 615
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 615
    Billets dans le blog
    2
    Par défaut
    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...

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Par défaut
    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.

Discussions similaires

  1. Exécution de Ping impossible
    Par mnementh64 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 17/09/2009, 12h26
  2. Exécuter un Ping
    Par yesil08 dans le forum Langage
    Réponses: 1
    Dernier message: 29/08/2009, 19h54
  3. Réponses: 5
    Dernier message: 28/02/2009, 23h10
  4. exécuter plusieurs XLS simultanément
    Par agrotic dans le forum ASP
    Réponses: 2
    Dernier message: 05/12/2007, 16h07
  5. Exécuter commande PING de Windows par le C#
    Par dahu17 dans le forum C#
    Réponses: 19
    Dernier message: 08/10/2007, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo