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 :

Tableau et chargement dynamique de fonction


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Par défaut Tableau et chargement dynamique de fonction
    Bonsoir,
    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
     
     
    size_t write(int fd, const void *buf, size_t count)
    {
    static size_t (*write_func)(int, const void *, size_t) = NULL;
    if (!write_func)
    write_func = (size_t(*)(int, const void *, size_t)) dlsym(RTLD_NEXT, "write");
     
     
    char tmp[count]; 
     
    memcpy(tmp,buf,count);
    printf(" %c \n",tmp[1]);
    }
    J'essaye d'afficher tmp[1] mais il m'affiche des caractères spéciaux comme '?'
    Avez vous une idée , Merci.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Bonsoir,

    Quand tu appelles « dlsym », tu récupères — éventuellement — un pointeur vers la fonction que tu recherches, mais ça ne veut pas dire que tu l'appelles automatiquement. Donc ton buffer reste vide et ton printf() affiche n'importe quoi.

    Et quand je dis « éventuellement », ça veut dire que tu peux également récupérer un pointeur NULL si la fonction que tu recherches n'a pas été trouvée. Il faut vérifier ce cas de figure, chose que tu ne fais pas.

    Enfin, « write » est censé être un appel système et pas une fonction d'une bibliothèque, même si ces appels sont tous bufferisés aujourd'hui. Par ailleurs, on ne voit pas, dans ton code, les appels dlopen() et dlclose() censés accompagner dlsym().

Discussions similaires

  1. Tableau dynamique et fonction de calculs
    Par piotrowski-s dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 07/11/2012, 12h05
  2. Réponses: 2
    Dernier message: 28/12/2011, 19h44
  3. Méthode de chargement dynamique de fonctions
    Par darkman19320 dans le forum C++
    Réponses: 12
    Dernier message: 24/10/2011, 16h05
  4. Tableau Croisé dynamique avec fonction joursentre
    Par raphael1008 dans le forum Deski
    Réponses: 10
    Dernier message: 13/07/2011, 22h31
  5. Réponses: 33
    Dernier message: 02/05/2011, 12h13

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