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 :

Sécuriser des opérations sur fichier..En étant portable


Sujet :

C

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Par défaut Sécuriser des opérations sur fichier..En étant portable
    Bonsoir,

    Ma question est la suivante :
    Est-il possible, en étant portable, de sécuriser les opérations habituelles(fread/fwrite/ftell/fseek/..) sur des fichiers ?
    Si oui, auriez-vous des liens éventuels ?
    Si non, la même question mais sur windows. J'ai déjà une solution "potable", mettant en oeuvre un thread qui met un hook sur un ensemble de fichiers.. Mais ça me parait lourd.

    Merci.

    Edit : Par sécuriser des opérations, j'entend : assurer le bon fonctionnement des fonctions fread/fwrite/.. de sorte que l'on aie pas à se soucier des erreurs(externes au programme) pouvant être renvoyés par celles-ci.

  2. #2
    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
    Par défaut
    Bonjour,

    Les fonctions de la librairie standard sont probablement implementees par la plupart des implementations du C, donc si tu les utilises, ton code sera portable.

    Ce qui va etre problematique, c'est le chemin, qui est propre a l'OS :
    • sous Windows, tu indiques le disque, suivi de ':', puis tu separes les repertoires par des '\'.
    • sous Unix/Linux, tu utilises des '/' comme separateur.


    Apres, tu peux essayer d'etre generique, mais ca demande que les chemins soient uniquement renseignes de maniere externe :
    • fichier de configuration
    • saisie par l'utilisateur
    • configuration automatique lors de l'installation [avec programme d'installation different pour Windows et/ou pour Unix]


    Enfin, si tu as des cibles de type micro-controlleurs, verifie bien que leur implementation supporte les fonctions de manipulation des fichiers.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Par défaut
    Bonjour,

    Merci pour ta réponse, mais je crois que tu as mal compris ma question.
    Si tu veux bien, relis mon premier post et surtout le petit "edit".

  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
    Par défaut
    Citation Envoyé par zizoufoot Voir le message
    Par sécuriser des opérations, j'entend : assurer le bon fonctionnement des fonctions fread/fwrite/.. de sorte que l'on aie pas à se soucier des erreurs(externes au programme) pouvant être renvoyés par celles-ci.
    Je ne comprends pas bien...

    Tu cherches a savoir comment gerer une ouverture de fichier qui echoue, c'est a dire que ton programme doit etre capable de continuer meme si tu ne peux pas ouvrir/lire/ecrire dans le fichier ?

    Si c'est bien ca :
    Reponse simple : tu ne peux pas
    Reponse complexe : tu geres un buffer, qui peut par exemple etre un autre fichier, et tu re-essayes regulierement d'ecrire dans ton fichier principal. Maintenant, tu te retrouves donc a devoir gerer ce qui se passe si tu ne peux jamais ouvrir/lire/ecrire le fichier. Autrement dit, tu as deplace le probleme.

    Si ce n'est pas ca : Est-ce que tu peux essayer d'expliquer differemment ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Par défaut
    C'est bien ça, tu as saisi ma question.
    Mais je vais ajouter une nuance par rapport à ce que tu as écris. J'aimerais que le programme s’exécute de sorte qu'aucun problème ne puisse arriver : Fichier déjà ouvert, impossibilité d'écrire, etc.
    Il faut donc faire en sorte qu'aucune erreur ne puisse subvenir lors de l'utilisation de ces fonctions. C'est le fond de ma question.

  6. #6
    Membre très actif

    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 582
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Il faut donc faire en sorte qu'aucune erreur ne puisse subvenir lors de l'utilisation de ces fonctions
    Il y a des erreurs que même l'utilisateur ne contrôle pas , exemple panne subite du disque dur... Rayonnement cosmiques qui vont faire commuter le mauvais transistor dans ton CPU...

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Par défaut
    Je comprend ta réponse.
    Je pensais cependant qu'il était possible de réduire les possibles erreurs ordinaires en créant un certain environnement sécurisé..
    Mais bon, au vu de vos deux réponses, je pense que ça n'est pas possible.

  8. #8
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    868
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 868
    Par défaut
    Citation Envoyé par zizoufoot Voir le message
    C'est bien ça, tu as saisi ma question.
    Mais je vais ajouter une nuance par rapport à ce que tu as écris. J'aimerais que le programme s’exécute de sorte qu'aucun problème ne puisse arriver : Fichier déjà ouvert, impossibilité d'écrire, etc.
    Il faut donc faire en sorte qu'aucune erreur ne puisse subvenir lors de l'utilisation de ces fonctions. C'est le fond de ma question.
    Je crois qu'il n'y a que sur windows que l'écriture dans un fichier déjà ouvert peut poser problème (je pense notamment à la suppression d'un exécutable en cours d'exécution). L'impossibilité d'écrire dans un fichier viendra la majorité du temps d'un manque de droits.

    Comme l'a dit mith06, il y a plein de choses contre lesquelles tu ne pourras rien faire d'autre qu'afficher un message d'erreur (exemple : déconnexion d'un disque dur sur lequel se situe le fichier dans lequel tu es en train de lire / écrire).

  9. #9
    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
    Par défaut
    Citation Envoyé par zizoufoot Voir le message
    J'aimerais que le programme s’exécute de sorte qu'aucun problème ne puisse arriver : Fichier déjà ouvert, impossibilité d'écrire, etc.
    Il faut donc faire en sorte qu'aucune erreur ne puisse subvenir lors de l'utilisation de ces fonctions. C'est le fond de ma question.
    Ce que tu peux faire, c'est que ton programme reste dans un etat correct dans tous les cas : si tu ne peux pas ecrire, tu peux prevenir l'utilisateur, lui proposer d'autres solutions (ecriture dans un fichier temporaire par exemple), ... Et ne pas crasher lamentablement comme certains programmes.

    Maintenant, tu ne pourras rien faire contre un disque absent, un secteur defectueux, un changement de droits, et encore pleins d'autres choses que j'oublie.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  10. #10
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Par défaut
    Ok, merci pour vos différentes réponses. Je vais me résigner à faire des test à chaque fonctions et créer/restaurer des backup.

  11. #11
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Les backups seront eux aussi sensibles aux mêmes problèmes…

  12. #12
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Par défaut
    Oui, mais ça réduit les risques de corruptions.

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

Discussions similaires

  1. Effectuer des opérations sur plusieurs fichiers txt
    Par Jim la truite dans le forum MATLAB
    Réponses: 4
    Dernier message: 11/08/2008, 23h18
  2. [2.0] Comment réaliser des opérations sur les ensembles ?
    Par Cereal123 dans le forum Framework .NET
    Réponses: 2
    Dernier message: 23/10/2006, 13h01
  3. Tester et récupérer des infos sur fichier distant
    Par cybertj dans le forum Langage
    Réponses: 2
    Dernier message: 17/05/2006, 09h18
  4. faire des opérations sur la date courante
    Par transistor49 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 18/04/2006, 17h39
  5. opérations sur fichier
    Par mmx dans le forum C
    Réponses: 8
    Dernier message: 07/01/2006, 14h13

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