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 bibliotheque syscall.h


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Par défaut la bibliotheque syscall.h
    bonjour,
    lors de la lecture du chapitre 8 du K&R2 à propos de l'interface UNIX le premier exemple :
    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
     
    #include "syscall.h"
     
    main(){ /* copie l'entrée sur la sortie */
    	char tamp[BUFSIZ];
    	int n;
     
    	while ((n = read(0, tamp, BUFSIZ)) > 0)
    		write(1, tamp, n);
    	return 0;
    }
    -> compilation:
    emprex@debian:~/le_langage_C/chap8$ gcc copieIE.c -o copieIE
    copieIE.c: In function ‘main’:
    copieIE.c:5: error: ‘BUFSIZ’ undeclared (first use in this function)
    copieIE.c:5: error: (Each undeclared identifier is reported only once
    copieIE.c:5: error: for each function it appears in.)
    emprex@debian:~/le_langage_C/chap8$ gcc copieIE.c -o copieIE
    emprex@debian:~/le_langage_C/chap8$
    or si j'utlise <stdio.h>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <stdio.h>
     
    main(){ /* copie l'entrée sur la sortie */
    	char tamp[BUFSIZ];
    	int n;
     
    	while ((n = read(0, tamp, BUFSIZ)) > 0)
    		write(1, tamp, n);
    	return 0;
    }
    la compilation se déroule très bien.
    Il me semblait que dans cette bibliothèque il fallait utiliser fread et fwrite.
    savez vous pourquoi ?

  2. #2
    Membre éclairé Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Par défaut
    Je résouds une partie de mon problème en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include "syscall.h"
    #define BUFSIZ 1024
     
     
    main(){ /* copie l'entrée sur la sortie */
    	char tamp[BUFSIZ];
    	int n;
     
    	while ((n = read(0, tamp, BUFSIZ)) > 0)
    		write(1, tamp, n);
    	return 0;
    }
    Or dans la suite du texte on nous explique que le parametre BUFSIZ est dans appelsys.h que je note syscall.h.

  3. #3
    Membre éclairé Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Par défaut
    appelsys.h est un fichier donné quelques pages plus loin...

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Rien de tout ça n'est standard C de toute façon.

    Par contre, en POSIX, le fichier d'en-tête "conseillé" pour ces fonctions est <unistd.h>.
    De plus, il serait sympa d'apprendre à écrire "temporaire" et d'éviter d'utiliser des nombres magiques quand on a les bonnes constantes dans les headers...

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <unistd.h>
    #include <stdio.h> /* pour BUFSIZ, la taille "idéale" de buffer d'I/O */
     
    int main(void) { /* copie l'entrée sur la sortie */
    	char temp[BUFSIZ];
    	ssize_t n;
     
    	while ((n = read(STDIN_FILENO, temp, BUFSIZ)) > 0)
    		write(STDOUT_FILENO, temp, n);
    	return 0;
    }
    De plus, je vois que ton compilateur ne te donne aucun warning, c'est donc qu'il est mal réglé: http://emmanuel-delahaye.developpez....odage-c/#LVI-A
    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.

  5. #5
    Membre éclairé Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Par défaut
    Bonjour,
    tamp est utilisé dans mon livre pour faire référence à tampon (Enfin je crois).>K&R2 chap8 page 169
    Mon compilateur n'est pas encore réglé, je commence à peine à l'utiliser.
    Merci pour le lien je l'étudierai avec attention.
    La base de mon problème était cette bibliothèque appelsys.h que je traduisais par syscall.h or le appelsys.h est donné quelques pages plus loin et n'est donc pas une mauvaise traduction .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tomcat]problème jsp et bdd, bibliotheque virtuelle
    Par drapier dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 09/01/2005, 10h54
  2. Réponses: 2
    Dernier message: 03/12/2004, 21h37
  3. Bibliothèques et Python
    Par Zorro dans le forum Général Python
    Réponses: 3
    Dernier message: 06/10/2004, 21h49
  4. bibliotheques graphiques et devc++
    Par bellepatte dans le forum C
    Réponses: 2
    Dernier message: 18/10/2003, 13h32
  5. [Kylix] bibliotheque libtwin32.so
    Par mic006 dans le forum EDI
    Réponses: 1
    Dernier message: 08/05/2002, 01h36

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