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 :

Deplacement très loin dans un fichier..


Sujet :

C

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Points : 74
    Points
    74
    Par défaut Deplacement très loin dans un fichier..
    Bonjour, je suis en Master 1 info et pour mon projet de système j'ai une fonction d'effacement de fichiers sécurisés à réaliser, c'est à dire remplir des blocs de manière aléatoire..

    Pour cela je dois me déplacer dans la partition (sur le disque directement) de plusieurs milliards d'octets.. (De la taille d'une partition..)
    J'aimerais savoir comment faire car avec le lssek j'ai toujours une erreur Invalid_Argument car je pense que comme mon entier est trop grand il a un entier négatif en entrée..

    Plus précisément comment faire un lseek sur un fichier de 15.000.000.000 octets..

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Deplacement très loing dans un fichier..
    Citation Envoyé par nicolaskarp
    Plus précisément comment faire un lseek sur un fichier de 15.000.000.000 octets..
    A ma connaissance, lseek() accepte un long, soit un minimum garanti de 0x7FFFFFFF (2 Mo environ).

    Pour faire plus, il faut une extension comme _lseeki64() sous Windows

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt__lseek.2c_._lseeki64.asp

    ou une fonction système comme _llseek() sous Linux...
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Points : 74
    Points
    74
    Par défaut
    En fait je dois me déplacer sur la partition (Système de fichier ext3) donc je peux être amené a me déplacer de 15 voir 30go selon la partition pour accéder au dernier descripteur de groupe.....

    Merci d'avance..

    Nicolas.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    en fait, tu manipules directement la partition comme un grand fichier ?!
    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 régulier
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Points : 74
    Points
    74
    Par défaut
    oui c'est ca.. La partition est de type ext3 donc je me déplace sur la parrtition pr accéder a la table des inoeuds, aux bitmaps..

    Nicolas.

  6. #6
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int i;
     
    /* On se place au debut du fichier */
    lseek (fd, 0, SEEK_SET);
     
    /* Puis on va a 10 * 100 octects du debut du fichier */
    for (i = 0; i < 10; i++)
    {
       lseek (fd, 100, SEEK_CUR);
    }

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par gege2061
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int i;
     
    /* On se place au debut du fichier */
    lseek (fd, 0, SEEK_SET);
     
    /* Puis on va a 10 * 100 octects du debut du fichier */
    for (i = 0; i < 10; i++)
    {
       lseek (fd, 100, SEEK_CUR);
    }
    Tu as testé sur un fichier de 30 Go, je ne suis pas sûr que ça fonctionne, (et pour arriver à 30 Go il va falloir un peu de temps avec 100 octets à chaque fois ).
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Trap D
    (et pour arriver à 30 Go il va falloir un peu de temps avec 100 octets à chaque fois ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lseek (fd, LONG_MAX, SEEK_CUR);
    En espérant que off_t soit bien un long, comme le supose Emmanuel

  9. #9
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    De unistd.h:

    # ifndef __off_t_defined
    # ifndef __USE_FILE_OFFSET64
    typedef __off_t off_t;
    # else
    typedef __off64_t off_t;
    # endif
    # define __off_t_defined
    # endif
    Donc cela dépend de votre machine

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/03/2015, 12h01
  2. Réponses: 4
    Dernier message: 14/12/2006, 22h13
  3. Cherche dans un fichier texte trés rapidement
    Par rvzip64 dans le forum Langage
    Réponses: 5
    Dernier message: 16/03/2006, 17h17
  4. Comment écrire une très longue variable dans un fichier ?
    Par hijodelanoche dans le forum Langage
    Réponses: 8
    Dernier message: 17/11/2005, 16h12

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