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 :

Problème d'E.S. sur fichier avec open


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 76
    Points : 87
    Points
    87
    Par défaut Problème d'E.S. sur fichier avec open
    Bonjour. J'essaye de faire de l'ES sur fichier avec l'instruction open (IO.h) mais il y a un problème : le programme est censé créer un fichier texte, écrire Hello, world dedans et le fermer. Je compile le programme normalement, je le lance et tout se passe correctement, je l'ouvre avec avec edit de dos, je constate qu'il y a bien écrit Hello,world et j'essaye d'enregistrer, mais edit me dit qu'il est impossible d'enregisrer.
    J'essaye alors de supprimer le fichier, mais dos me marque Accès refusé.
    Que faire ?
    Voilà le source du programme 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 <string.h>
    #include <stdio.h>
    #include <fcntl.h>
    #include <io.h>
     
    int main(void)
    {
       int handle;
       char msg[] = "Hello world";
     
       if ((handle = open("TEST.$$$", O_CREAT | O_TEXT)) == -1)
       {
          perror("Error:");
          return 1;
       }
       write(handle, msg, strlen(msg));
       close(handle);
       return 0;
    }

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    verifies les attributs du fichier par l'explorateur .
    et surtout rajoutes les attributs suivants en 3 argument de open:
    _S_IREAD | _S_IWRITE
    note supprime le fichier avant de recommencer .

  3. #3
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut droits d'accès
    Bien le bonjour,

    la commande open admet un autre argument facultatif : sur les droits d'accès. -intéressant-

    prototype de open :
    int open (char * nom_du_fichier,
    int mode_d'accès,
    int droits_d'accès); //c'est le dernier qui ets facultatif.

    le second argument est un int pour lequel des constantes (comme O_CREAT et ses copines) ont été définies dans fcntl.h

    le troisième argument est amusant : il faut mettre le nombre qui représente le nombre binaire correspondant à 9bits :
    les 9 derniers bits du fichiers sont : 3bits pour les droits du propriétaire du fichier, 3 pour le groupe d'utilisateur auquel l'user appartient et 3 pour les autres. Chaque groupe est composé de la manière suivante : 1 bit pour la lecture, 1bit pour l'écriture et 1 bit pour l'exécution.

    La valeur d'un bit détermine donc UN droit.

    Donc si tu veux tous les droits d'accès pour tout le monde, tu rajoutes à la fin le nombre 0777 (correspondance octale de 111-111-111)[/b]

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 76
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par khayyam90
    les 9 derniers bits du fichiers sont : 3bits pour les droits du propriétaire du fichier, 3 pour le groupe d'utilisateur auquel l'user appartient et 3 pour les autres. Chaque groupe est composé de la manière suivante : 1 bit pour la lecture, 1bit pour l'écriture et 1 bit pour l'exécution.
    Qui sont le propriétaire, l'utilisateur et les autres ?
    Je n'ai pas trop compris ces termes...
    Citation Envoyé par farscape
    verifies les attributs du fichier par l'explorateur .
    Désolé, sur l'ordinateur sur lequel je travaille, il n'y a que dos qui soit utilisable , donc pas d'explorateur, mais j'essaye de faire le reste de tes instructions.

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut ,essaye de lancer attrib pour visualiser les attributs.
    voir les options de attrib en faisant attrib /? pour modifier les attributs.

  6. #6
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut groupes et user
    Bien la bonne après-midi,

    les distinctions des 3 paquets de bits proviennent d'une gestion des users qui commence à dater.

    Disons que seuls comptent les 1er et 3ème paquets de bits. Si tu crées un prog, tu en devient par défaut le proprio. le 3ème paquet contrôle les accès de tous les autres utilisateurs à part le proprio.

    note : il n'est utile de spécifier le 3ème argument de open que lors d'une création de fichier.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 76
    Points : 87
    Points
    87
    Par défaut
    Ok. Merci pour vos conseils!

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

Discussions similaires

  1. Problème de page blanche sur navigation avec html:link
    Par assistibm dans le forum Struts 1
    Réponses: 7
    Dernier message: 13/07/2007, 13h31
  2. Réponses: 15
    Dernier message: 04/06/2007, 01h53
  3. [XSL] Problème de parse d'un fichier avec Namspaces
    Par mpereg dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 20/02/2007, 19h24
  4. I/O sur fichiers avec JBoss
    Par FredKéKé dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 26/09/2006, 09h18
  5. [C#] PRoblème d'écriture d'un fichier avec accent
    Par shinchan dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/04/2006, 09h13

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