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 :

synchro2Proc.c:24:21: error: invalid suffix "_RDWR"


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut synchro2Proc.c:24:21: error: invalid suffix "_RDWR"
    Le code ci-joint genere l'erreur "synchro2Proc.c:24:21: error: invalid suffix "_RDWR" on integer constant"
    J'ai passé pas mal de temps dessus et je ne comprends toujours pas ce qui se passe.
    Pourriez-vous m'aider à résoudre ce probleme?

    Merci par avance. 8)

    Voici le code en question:

    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
    #include <stdio.h>
    #include <sys/types.h>
    #include <unistd.h>
    #include <signal.h>
    #include <fcntl.h>
    #include <sys/stat.h>
     
    #define BUFSZ 1024
     
     
    void sig_hand(int sig) {
    }
     
    int main(int argc,char *argv) {
     
      char *fic="./fic";
      char message[100]="message ecrit par le pere";
      pid_t pid;
      sigset_t sig_fils;
      struct sigaction action;
      char buf[BUFSZ];
      int descFic;
     
      descFic=open(fic, 0_RDWR);
      write(descFic, message, 20);
      perror("write");
     
      if((pid=fork()) == 0) {
        sigfillset(&sig_fils);
        sigdelset(&sig_fils, SIGUSR1);
     
        action.sa_mask=sig_fils;
        action.sa_flags=0;
        action.sa_handler=sig_hand;
        sigaction(SIGUSR1, &action, 0);
     
        sigsuspend(&sig_fils);
        read(descFic,buf,BUFSZ);
        perror("read");
        printf("%s", buf);
      }
     
      return 0;
    }

    Meric de penser à entourer voter code avec les balises [ code ] et [ /code ] prévues à cet effet. Gangsoleil

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Le flag attendu par open() commence par un O (o majuscule), pas un 0 (zero). En C (en dans la plupart des langages), un identificateur ne peut pas commencer par un chiffre, ce que dit ton compilateur.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut write: Bad file descriptor
    OK. Merci de m'avoir éclairer sur ce point mais j'ai un autre problème.
    Le write ne s'execute pas correctement et renvoie l'erreur "Bad file descriptor".
    Quelqu'un voit-il de quoi cela pourrait venir?

    Merci encore.

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 123
    Points
    28 123
    Par défaut
    Bonjour,

    pourquoi utiliser des fonctions non portables (open, write, ...) au lieu de fonctions portables, comme fopen, fwrite, ... ?

    par ailleurs, l'ouverture de fichier peut échouer, il faut donc tester le code de retour des fonctions.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    J'ai tester le code de retour des fonctions; write me retourne 'Bad file descriptor'

    Je ne comprends pas pourquoi cette erreur.

    Voilà. Merci beaucoup.

  6. #6
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Est-ce que open() reussit (i.e descFic != -1) ?
    As-tu de bonnes raisons de ne pas utiliser les fonctions standard fopen()/fwrite()/fclose() ?
    As-tu de bonnes raisons d'ouvrir un fichier en mode lecture/ecriture?

  7. #7
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par gangsoleil
    Bonjour,

    pourquoi utiliser des fonctions non portables (open, write, ...) au lieu de fonctions portables, comme fopen, fwrite, ... ?
    Il utilise des fork typique d'un systeme Unixoïde, donc le write me semble correct, je dirai que son programme n'est pas destiné à etre porté sur d'autres plateformes, en revanche il est vrai que si le programme veut etre porté, il faut utilise fwrite/fread
    Mais peut-etre me trompai-je.

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/06/2011, 18h34
  2. error: invalid conversion from `const wxChar*' to `CHAR*'
    Par barbarello dans le forum wxWidgets
    Réponses: 16
    Dernier message: 31/01/2006, 11h28
  3. [MySQL]DBX error : invalid translation
    Par billoum dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/01/2006, 20h55

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