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 :

ecrire dans un fichier en C


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Points : 42
    Points
    42
    Par défaut ecrire dans un fichier en C
    bonjour à tous j'essaye de stocker dans un fichier

    des paramètres d'un semaphore que j'ai créé mais ça ne passe pas

    voici mon code

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    #include <stdio.h>
    #include <sys/sem.h>
    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <stdlib.h>  //  exit
    #include <fcntl.h>  //open read write 
     
     
    key_t cle;    //Creation de  la cle
    int semid;    // Nom des semaphores
    char *file="/tmp/fic.data";  //fichier  qui va contenir le message d'acc
     
    #define MAX 0   //Definition de la taille des semaphores
     
    //Fonction pour  ecrire  les paramètres dans un fichier
    void ecriredansfichier(key_t vcle,ushort*  vinit_sem,int vsemid)
    {
     int file;
     
      file=open("filex.txt",O_CREAT | O_RDWR,0666);
     if(file < 0)
       {
         printf("Le fichier n'a pas pu etre créé\n");
       }
     
       else 
         {
           printf("Le fichier a été créé avec succès\n");
           file=open("filex.txt", O_WRONLY,0666);
            write(file,vsemid,0666);
          close (file);
            //write(file,vsemid ,0777);
          }
     
         }
     
    int main(int argc, char *argv[])
      {
        //Creation de la clé à partir du nom du fichier
        cle=ftok(file,0);
        if(cle==-1)
         {
          fprintf(stderr,"Erreur  de  creation de la clé\n");
          exit(1);
         }
     
          //Creation des semaphores
        semid = 557056;//semget(cle,2,IPC_CREAT|IPC_EXCL|0666);
        if(semid==-1)
         {
          fprintf(stderr,"Erreur  avec semid\n");
          exit(2);
         }
     
          // initialisation des 2 semaphores
          ushort init_sem[2]={1,0};  // valeurs d'initialisation des semaphores 
     
            if (semctl(semid,2,SETALL,init_sem)==-1) 
          {
    	fprintf(stderr,"Probleme sur semctl SETALL\n");
    	exit(3);
          }
     
        //Ecriture  des  paramètres  dans un fichier pour  être lu par les autres processus
     
        ecriredansfichier(cle,init_sem,semid);
      }
    j'ai tout fouillé et refouillé ça butte à un endroit que je retrouve pas

    Merci de m'aider à y voir clair

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Heu oui, c'est un peu normal que cela bloque :

    Tu ouvre le fichier en lecture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file=open("filex.txt",O_CREAT | O_RDWR,0666);
    si cela marche, tu l'ouvres en écriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file=open("filex.txt", O_WRONLY,0666);
    ensuite tu écrit dedans avec une longueur qui sort d'on ne sait où (0666)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    write(file,vsemid,0666);
    résultat, cela doit écrire n'importe quoi (d'ailleurs, je ne suis même pas sûr que le 2eme open réussisse car tu ne testes pas le retour.

    Donc tout d'abord bien lire et comprendre la documentation et les paramètres


    Ensuite, pour le 2eme open, il ne faut pas utiliser les valeurs sous forme de nombre (0666) mais plutôt les constantes, c'est plus facile à comprendre (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)

    En gros, cela donnerait un truc comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    file=open("filex.txt",O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
    if(file != -1)
    {
       write(file, vsemid, len); /* ici, il faut calculer la longueur de ce qu'il faut écriredans le fichier */
       close (file);
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. Ecrire \" dans un fichier
    Par photorelief dans le forum Langage
    Réponses: 2
    Dernier message: 14/09/2005, 15h56
  2. [JAR] Lire et Ecrire dans un fichier contenu dans un jar
    Par lipao17 dans le forum Général Java
    Réponses: 5
    Dernier message: 02/05/2005, 12h01
  3. Ecrire dans un fichier
    Par gibet_b dans le forum Linux
    Réponses: 5
    Dernier message: 25/04/2005, 20h11
  4. Ecrire dans un fichier grace à un trigger ?
    Par zigoo dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 29/10/2004, 20h03
  5. Ecrire dans un fichier sans supprimer le reste
    Par koan_sabian dans le forum Linux
    Réponses: 4
    Dernier message: 20/02/2003, 15h44

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