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 :

but / utilité de la fonction ioctl ()


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut but / utilité de la fonction ioctl ()
    Bonjour,
    Je suis en deuxième année de DUT info, et actuellement en projet tut. je dois travaillé sur un code en C qui utilise la fonction ioctl ().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ioctl(sockfd, SIOCGIFFLAGS, &ifrcopy);
    Le problème viens du fait que je ne comprend pas son utilité.

    merci de vos réponses
    (bien sur j'ai été voir su Google mais je n'ai rien trouvé de bien concret)

  2. #2
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonsoir,

    Le man ioctl en français:
    http://pwet.fr/man/linux/appels_systemes/ioctl

    Par ailleurs, ici on a la description de SIOCGIFFLAGS
    http://linux.die.net/man/7/netdevice

    En gros, la commande permet de récupérer certains flags affectés au descripteur sockfd.

  3. #3
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    Citation Envoyé par Nudger Voir le message
    Bonsoir,

    Le man ioctl en français:
    http://pwet.fr/man/linux/appels_systemes/ioctl

    Par ailleurs, ici on a la description de SIOCGIFFLAGS
    http://linux.die.net/man/7/netdevice

    En gros, la commande permet de récupérer certains flags affectés au descripteur sockfd.
    Plutôt de modifier les propriété d'un descripteur de fichier afin de l'adapter aux propriétés matériel utilisé.

    La dernière fois que je l'ai manipulé, c'était dans un projet embarqué pour configurer une liaison hdlc entre deux cartes.
    bazar: http://www.improetcompagnie.com/publ...ctacles-6.html

    BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil

    Emacs Wiki: http://www.emacswiki.org/

    En attente de ce que produira: http://www.pushmid.com

  4. #4
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    SIOCGIFFLAGS, SIOCSIFFLAGS
    Get or set the active flag word of the device.
    J'aurais bien dit "G" pour get et "S" pour set ...
    Mais je n'ai jamais utilisé donc je ne peux pas assurer.

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    C'est plus clair quand on comprend que ça veut dire « I/O Control ». Ça sert à modifier les paramètres d'un descripteur de fichiers qui ne s'appliquent pas directement aux données.

    Par exemple, si tu ouvres le port série RS-232 via « /dev/ttyS0 », tu vas utiliser read() et write() pour respectivement recevoir ou envoyer des données, et tu vas utiliser ioctl() pour contrôler la vitesse de transmission de ton port, et autres paramètres. D'une manière générale, ça sert à manipuler dans un fichier spécial (un « /dev ») tout ce qui ne peut pas se passer directement avec open().

    Donc, évidemment, c'est très dépendant de ce que tu ouvres et de ce que tu veux faire. Le premier paramètre est le descripteur de fichier à manipuler, le second le nom de l'action à effectuer, et les troisième et éventuels suivants des paramètres qui dépendent entièrement de l'action à faire. Généralement, c'est un pointeur vers une structure définie dans le contexte pour passer et recevoir les informations nécessaires.

    En l'occurrence, SIOCGIFFLAGS signifie « Sockets: I/O Controls : Get InterFace Flags ». Tous les symboles valides sont construits selon le même principe. Tant et si bien qu'ils semblent tous barbares de prime abord, mais qu'on parvient presque toujours à deviner leur signification après les premières lectures.

    C'est ce sur quoi s'appuie en grande partie la commande ifconfig. Naturellement, ioctl() peut s'appliquer à tous les autres domaines. Par exemple, c'est par ce biais que je gère le retour de force de mon joystick sous Linux.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour vos reponses

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    J'ai une autre question, que signifie SIOCDEVPRIVATE pour le deuxième argument
    Merci.

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Sous Linux, on trouve la réponse en bas du fichier « /usr/include/bits/ioctls.h » :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    /* Device private ioctl calls.  */
     
    /* These 16 ioctls are available to devices via the do_ioctl() device
       vector.  Each device should include this file and redefine these
       names as their own. Because these are device dependent it is a good
       idea _NOT_ to issue them to random objects and hope.  */
     
    #define SIOCDEVPRIVATE      0x89F0  /* to 89FF */
     
    /*
     *  These 16 ioctl calls are protocol private
     */
     
    #define SIOCPROTOPRIVATE 0x89E0 /* to 89EF */

    Ce sont des plages de code réservées aux pilotes réseau qui s'enregistrent dynamiquement. Tu peux lire des infos ici et ici.

    J'ajoute que c'est de la programmation noyau sous Linux, que c'est très technique, et que ce n'est pas un projet pour débutant. En tout cas, pas sans tuteur. C'est bien de vouloir viser haut, mais ce n'est pas forcément ce qu'il y a de mieux pour progresser.

Discussions similaires

  1. Utilité de la fonction Secure Storage dans Eclipse
    Par miltone dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 06/03/2012, 14h54
  2. utilité de la fonction updateVisitedHistory
    Par étudiante_info dans le forum Android
    Réponses: 2
    Dernier message: 17/03/2011, 12h23
  3. Requêtes dans le fonction ioctl
    Par syl1405 dans le forum C
    Réponses: 2
    Dernier message: 28/06/2010, 14h39
  4. Socket fonction ioctl
    Par nightwar dans le forum Réseau
    Réponses: 7
    Dernier message: 22/07/2008, 18h00
  5. qu'elle est l'utilité de la fonction Call
    Par mennix dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/05/2007, 19h31

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