[LMI] - Manipulations de fichier

Voir le sujet précédent Voir le sujet suivant Aller en bas

[LMI] - Manipulations de fichier

Message  justblaze le Sam 05 Avr 2008, 15:25

Voilà j'ai un petit soucis, j'aimerais savoir comment utiliser le LSEEK (SEEK_END) ...
Je dois d'abord ouvrir le fichier (le créer si il n'existe pas, ce qui voudrait dire que je n'ai pas fais l'exercice précédent Very Happy ) en écriture seule, puis utiliser le SEEK_END ?? si oui pourrait-on m'aider pour le code à mettre après l'ouverture... merci

Code:
mov eax,5 ;open
mov ebx,f ;nom du fichier
mov ecx,00100000b ;O_CREATE
or ecx,01b ;O_WRONLY
mov edx,111100100 ;droits d'accès
int 0x80
mov [a],eax ;récupère l'adresse du début de fichier (je crois)

peut-on me dire si le code suivant est bon pour le "lseek"
Code:
mov eax,5 ;open
mov ebx,f ;nom du fichier
mov ecx,000020000b ;SEEK_END
or ecx,01b ;O_WRONLY
mov edx,111100100 ;droits d'accès
int 0x80
mov [a],eax ;récupère l'adresse de la position dans le fichier (je crois)

justblaze

Nombre de messages : 159
Age : 30
Prénom : Ismael
Statut : Etd 3R11
Localisation : Wolu. St. Lambert
Date d'inscription : 09/11/2006

Revenir en haut Aller en bas

Re: [LMI] - Manipulations de fichier

Message  pbt le Sam 05 Avr 2008, 16:24

justblaze a écrit:peut-on me dire si le code suivant est bon pour le "lseek"
Code:
mov eax,5 ;open
mov ebx,f ;nom du fichier
mov ecx,000020000b ;SEEK_END
or ecx,01b ;O_WRONLY
mov edx,111100100 ;droits d'accès
int 0x80
mov [a],eax ;récupère l'adresse de la position dans le fichier (je crois)

Le numéro associé à l'appel système lseek est 19 et pas 5. Tu dois ouvrir ton fichier (ça tu sembles savoir le faire) et ensuite utiliser lseek afin de te positionner à la fin.

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [LMI] - Manipulations de fichier

Message  justblaze le Ven 11 Avr 2008, 11:50

J'ai toujours un soucis avec le fameux "LSEEK"

après l'ouverture ci-dessous
Code:
section .bss
filedes  resd  1
..
..
;=================================
;Ouverture du fichier en écriture
;=================================
   mov eax,5 ;appel système open
   mov ebx,f ;nom du fichier
   mov ecx,001000000b ;création du fichier si inexistant
   or ecx,01b
   mov edx,111100100b ;droits du fichier
   int 0x80
            mov [filedes],eax

puis viens le lseek
Code:
mov eax,19 ;appel système lseek
mov ebx,[filedes] ;descripteur de fichier
mov ecx, ??? ;offset
mov edx,2 ;SEEK_END
int 0x80

est-ce que le code pour l'utilisation du LSEEK est bon ?? j'ai regardé dans le man 2 lseek et je n'ai pas très bien compris la phrase
off_t lseek(int fildes, off_t offset, int whence)
..
..
La fonction lseek place la tête de lecture/écriture à la position offset dans le fichier associé au descripteur fildes en suivant la directive whence ainsi...

justblaze

Nombre de messages : 159
Age : 30
Prénom : Ismael
Statut : Etd 3R11
Localisation : Wolu. St. Lambert
Date d'inscription : 09/11/2006

Revenir en haut Aller en bas

Re: [LMI] - Manipulations de fichier

Message  nvs le Ven 11 Avr 2008, 12:33

on peut voir les choses de la manière suivante :

le déplacement de la tête de lecture (du pointeur au sein du fichier) se fait en deux étapes :

d'abord, on indique, dans edx, où placer dans un premier temps la tête de lecture : en début de fichier, à la position courante ou en fin de fichier. il n'y a donc que 3 positions possibles dans un premier temps (dont une qui consiste à ne pas bouger la tête de lecture) ;

ensuite, on indique, dans ecx, de combien d'octets déplacer la tête de lecture à partir de la position obtenue après la première phase du déplacement. cet offset (ce décalage) est un entier signé : un décalage négatif indique un déplacement vers le début du fichier, un offset négatif indique un déplacement vers la fin du fichier. bien entendu, un décalage négatif à partir du début du fichier, par exemple, génèrera une erreur.




_________________

nvs

Nombre de messages : 5238
Age : 43
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMI] - Manipulations de fichier

Message  justblaze le Mar 15 Avr 2008, 18:45

Voilà je penses que j'ai trouvé la solution, je penses qu'il fallait simplement mettre '0'
Code:
mov eax,19 ;appel système lseek
mov ebx,[filedes] ;descripteur de fichier
mov ecx,0 ;offset
mov edx,2 ;SEEK_END
int 0x80
normalement je devrais reprendre la nouvelle position du descripteur de fichier...
le descripteur est toujours donné par eax après l'appel système ?

justblaze

Nombre de messages : 159
Age : 30
Prénom : Ismael
Statut : Etd 3R11
Localisation : Wolu. St. Lambert
Date d'inscription : 09/11/2006

Revenir en haut Aller en bas

Re: [LMI] - Manipulations de fichier

Message  nvs le Mar 15 Avr 2008, 21:01

le descripteur de fichier n'est pas modifié lorsque la tête de lecture (le pointeur de fichier) est déplacée. ce descripteur est constant et lié au fichier jusqu'à la fermeture de ce dernier.








_________________

nvs

Nombre de messages : 5238
Age : 43
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMI] - Manipulations de fichier

Message  Contenu sponsorisé Aujourd'hui à 21:00


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum