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

C Discussion :

la fonction system


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Par défaut la fonction system
    voici ma fonction initiale
    #include<stdio.h>
    #include<stdlib.h>
    main()
    {

    system("arp -a") ;

    system("PAUSE") ;
    }
    je voudrais ajouter la commande ping pour pinguer toute les machines trouver par la commande arp -a car j'ai remarquer que certaines machines trouver par cette commande ne repondais pas au ping .
    bon ensuite pour celle qui reponde je voudrais ajouter la commande nbtstat -r ip_de_la_machine pour retrouver les noms netbios .
    ce programme a juste pour but de retrouver tous les ordinateurs connectés sur un réseau local .
    meci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Bonjour,

    Ne serait-il pas plus simple d'écrire un programme script pour cette fonctionnalité?

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Un script semble plus adapté en effet. Si tu veux vraiment le faire en C, popen() permet d'exécuter une commande externe et d'en récupérer la sortie. Evidemment tu peux aussi faire la même chose à la main avec pipe/fork/dup2/execve.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 815
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par stevelaclasse Voir le message
    voici ma fonction initiale
    #include<stdio.h>
    #include<stdlib.h>
    main()
    {

    system("arp -a") ;

    system("PAUSE") ;
    }
    je voudrais ajouter la commande ping pour pinguer toute les machines trouver par la commande arp -a car j'ai remarquer que certaines machines trouver par cette commande ne repondais pas au ping .
    La fonction system() a pour but de lancer une tâche indépendant de ton code C.
    Si tu veux récupérer le résultat de cette tâche, tu peux pas passer par cette fonction. Te faut utiliser au mieux popen() comme l'a dit matafan, ou au pire te reconstruire tout un code qui exécutera la même chose que ping.

    Et tous l'ont dit: un truc de cette nature se fait par script (ça se fait en 3mn) plutôt qu'en C (où il en faudra 30).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre averti
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Par défaut
    bon excuser moi
    mais vous pourrez peut être me dire comment ça se passe avec les sripts .

  6. #6
    Membre Expert Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    Par défaut
    tu es sous quel OS ?
    Sous windows tu peux t'inspirer de ça pour remplacer la commande arp.

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 815
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par stevelaclasse Voir le message
    bon excuser moi
    mais vous pourrez peut être me dire comment ça se passe avec les sripts .
    Si t'es sous Linux alors ce script pourra te donner une idée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/sh
    for ligne in $(arp -a)
    do
        # Suppression des infos inutiles (on enlève tout ce qu'il y a avant et après le premier couple de parenthèses
        host=$(echo "$ligne" |sed -e "s/^.\{1,\}(//" -e "s/).\{1,\}$//")
     
        # Ping
        echo "ping $host"
        ping $host
    done
    Bien entendu, il fut quand-même avoir certaines bases du script shell. Mais bon, on envisageait pas qqun se lançant dans une tâche de ping automatisé qui n'aurait pas les connaissances de base pour manipuler son système...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 38
    Par défaut
    C'est pas pour en repasser une couche mais je pense qu'un petit script est clairement plus adapté.
    Si tu n'est pas sous Linux ou avec Cygwin sous Windows (et donc sans interpreteur shell), tu peux toujours utiliser python:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import os
     
    f = os.popen("arp -a")
    s = f.readlines()
     
    for i in range(len(s)):
        n = s[i].split(' ')[1].replace('(', '').replace(')', '')
        print ("Resultat de la commande: %i" % (os.system("ping -w 3 " + n)))
     
    f.close();
    Bon j'ai pas essayé sur Windows mais en théorie c'est multi plateforme ^^

Discussions similaires

  1. fonction system et probleme d'arobase
    Par yerome dans le forum Langage
    Réponses: 3
    Dernier message: 08/07/2005, 16h53
  2. Réponses: 10
    Dernier message: 08/02/2005, 16h04
  3. Réponses: 1
    Dernier message: 20/08/2004, 09h16
  4. Réponses: 2
    Dernier message: 30/03/2004, 11h31
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

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