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

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Points : 32
    Points
    32
    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 chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    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 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Bonjour,

    Ne serait-il pas plus simple d'écrire un programme script pour cette fonctionnalité?
    Bien le bonjour chez vous
    Jowo

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

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    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
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 986
    Points
    30 986
    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
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Points : 32
    Points
    32
    Par défaut
    bon excuser moi
    mais vous pourrez peut être me dire comment ça se passe avec les sripts .

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

    Informations professionnelles :
    Activité : Développeur C

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

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 986
    Points
    30 986
    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 régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 32
    Points : 89
    Points
    89
    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