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 :

Infos sur la fonction select en C


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Par défaut Infos sur la fonction select en C
    Bonjour ,
    je cherche des infos et des documents sur l'utilisation de select en C. Select permet par exemple et dans mon cas d'afficher des informations à l'écran venant d'un processus externe et permettre à l'utilisateur de taper au clavier.

    Merci !

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 392
    Par défaut
    man select (sous unixoïde)
    ou bien la version Windows (attention, son comportement n'est pas standard, puisqu'elle ignore le premier paramètre)
    http://msdn.microsoft.com/library/en-us/winsock/winsock/select_2.asp
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Par défaut
    Merci pour la réponse, je compte l'utiliser sous Linux. Je vais chercher d'autres exemples.

    Merci !

  4. #4
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Il y a une explication codee et quelques liens en bas de la page...

    http://www.lowtek.com/sockets/select.html

    Jc

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Par défaut
    Merci pour le dernier lien.
    Mais j'ai encore des difficultés à comprendre comment l'utiliser sous linux.

    Mon but est de pouvoir surveiller un évènement au clavier et si des informations sont écrites dans une FIFO.

    Sous linux, fd0 représente le clavier. Mais comment ajouter une FIFO à l'ensemble des descripteurs que select doit surveiller ?

    Si le clavier fait partie des descripteurs en lecture que select surveille, une fifo sera aussi en lecture ?

    Elle est pas évident cette fonction!

    Merci !

  6. #6
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    fd0 représente le clavier
    Le descripteur 0 représente par défaut l'entrée standard qui est généralement le clavier.

    Select permet de gérer plusieurs descripteurs, comment est-ce que tu gères ta FIFO?

    Jc

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Par défaut
    en fait ce sont des Fifos Temps réel.
    donc créées dans un fichier C avec les fonctions rtf_create......

    D'un autre coté, je dois dans mon application principale, gérer un affichage provenant de la lecture dans la fifo temps réel et d'un autre coté gérer la saisie au clavier par un utilisateur de données à mettre dans une autre fifo.

    j'espere ne pas etre trop brouillon dans mon explication !

    Merci !

  8. #8
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    voilà une utilisation avec select tiré de man auquel j'ai ajouté quelques commentaires...

    Espérant que ca aide...

    Jc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    #include <stdio.h>
    #include <sys/time.h>
    #include <sys/types.h>
    #include <unistd.h>
     
    int main(void) 
    {
    fd_set rfds,newrfds;
     
    struct timeval tv;
    int retval;
     
          /* On regarde l'entree standard (fd 0). */
          FD_ZERO(&rfds);
          FD_SET(0, &rfds);
     
          /* On attend 5 seconde, a mettre a 0 pour un select non bloquant*/
          tv.tv_sec = 5;
          tv.tv_usec = 0;
     
          /* On copie rfds car select le modifie */
          newrfds = rfds;
     
          /* Le premier argument et le maximum des descripteurs +1 */
          retval = select(1, &newrfds, NULL, NULL, &tv);
          /* tv a pu etre modifie, remettre a jour si on reutilise select!!! */
     
          /* S'il y a une erreur */
          if (retval == -1)
                perror("select()");
          else 
                /* Si l'utilisateur a ecrit qq chose, REMARQUE: IL DOIT AVOIR APPUYE SUR ENTREE! */
                if (retval)
                      {
                      printf("Data is available now.\n");
                      /* FD_ISSET(0,&newrfds) serait vrai, mais vu que c'est le seul descripteur, on n'a pas besoin de le tester */
                      //pour vider l'entrée standard
                      while((int) '\n'!= getchar())
                            ;  
                      }
               else
                      printf("No data within five seconds.\n");
     
    return 0;  
    }

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Par défaut
    J'ai plus ou moins compris comment fonctionne Select avec le clavier mais j'ai du mal à comprendre comment lier la fifo au select. Je dois rajouter le descripteur de la fifo a l'ensemble des descripteurs que surveille Select mais je ne vois pas trop la forme que cela a.

    Embetant aussi, ma saisie est prévue pour etre non canonique (termios.h) afin que la touche saisie serve de validation......mais apparement il faut absolument appuyer sur une touche pour que select détecte que l'on veut saisir au clavier, et cette touche n'est pas prise en compte....

    Merci pour le code je vais tacher de me débrouiller

    ++

Discussions similaires

  1. [XL-2010] Problème sur la fonction SELECT CASE
    Par ValerieH34 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/05/2015, 16h30
  2. Problème sur la fonction SELECT CASE (bis)
    Par ValerieH34 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/05/2015, 13h32
  3. Problème sur la fonction SELECT CASE
    Par ValerieH34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/05/2015, 10h47
  4. [Débutant] Infos sur les fonctions créées automatiquement par GUIDE
    Par flo31100 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 02/05/2013, 15h13
  5. Infos sur les fonctions
    Par johannj dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/06/2009, 14h40

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