Lifse td1
Lifse td1
Lifse td1
Les fichiers
The number of bytes written may be less than count if, for example, there is insufficient space on the
underlying physical medium, [...], or the call was interrupted by a signal handler after having written
less than count bytes.
For a seekable file (for example, a regular file) writing takes place at the file offset, and the file
offset is incremented by the number of bytes actually written. If the file was opened with O_APPEND,
the file offset is first set to the end of the file before writing. The adjustment of the file offset
and the write operation are performed as an atomic step. [...]
RETURN VALUE
On success, the number of bytes written is returned (zero indicates nothing was written). It is not an
error if this number is smaller than the number of bytes requested; this may happen for example because
the disk device was filled.
If a write() is interrupted by a signal handler before any bytes are written, then the call fails with the
error EINTR; if it is interrupted after at least one byte has been written, the call succeeds, and returns
the number of bytes written. [...]
On files that support seeking, the read operation commences at the file offset, and the file offset is
incremented by the number of bytes read. If the file offset is at or past the end of file, no bytes are
read, and read() returns zero.
If count is zero, read() may detect the errors described below. In the absence of any errors, or if read()
does not check for errors, a read() with a count of 0 returns zero and has no other effects. [...]
RETURN VALUE
On success, the number of bytes read is returned (zero indicates end of file), and the file position is
advanced by this number. It is not an error if this number is smaller than the number of bytes requested;
this may happen for example because [...]
1/3
Université Lyon 1, Département Informatique TD 1 LIFSE – printemps 2024
Avec open(), write() et read(), on ne se préoccupe pas a priori du type des données que l’on stocke dans les fichiers :
on écrit et on lit des octets dans les fichiers. Dans cet exercice, on réfléchit à la façon dont différentes données présentes en
mémoire peuvent être rangées dans un fichier régulier.
On considère les deux extraits de programmes suivants, Listing 1.1 et Listing 1.2. On suppose que l’on arrive à les com-
piler (en ajoutant les fichiers d’en-têtes nécessaires) en deux exécutables read-bin et write-bin, et qu’ils s’exécutent et se
terminent en retournant 0.
1) En exécutant le programme read-bin ou write-bin depuis un shell, comment faire pour vérifier qu’il se termine en
retournant 0 ? Que nous apprend cette valeur de retour sur les opérations d’écriture et de lecture qui ont été exécutées
par le programme ?
2) À la ligne 7 du programme write-bin, combien d’octets ont écrits dans le fichier test.dat (on attend une explication
et une valeur numérique) ?
3) Questions préliminaires : combien de chiffres hexadécimaux sont nécessaires pour représenter un octet ? Quels sont
les écritures en hexadécimal des entiers 42, 3, 2 et 1 (écrit en décimal) ?
4) Que fait la boucle des lignes 5 à 9 dans le programme read-bin ?
5) Après avoir exécuté write-bin pour créer test.dat, le programme read-bin affiche :
76 61 6 c 75 65 00 2 a 00 00 00 01 00 00 00 02 00 00 00 78 56 34 12
2/3
Université Lyon 1, Département Informatique TD 1 LIFSE – printemps 2024
— Quelle est la taille d’un entier de type unsigned int sur ce système ?
— Comment est codé en mémoire l’entier 42 sur ce système ?
On a un très grand tableau de n caractères en mémoire, et on dispose d’un pointeur de type char* vers le premier carac-
tère de ce tableau : on veut écrire ce tableau dans un fichier régulier, via un descripteur de fichier fd. Donnez une fonction
writech pour cela, en procédant caractère par caractère. Donnez un exemple d’appel de votre fonction.
Attention, pour les fichiers vous devez tenir compte des droits des répertoires et sous répertoires. Comme son nom l’indique,
visioneurPDF est un logiciel pour visualiser les PDF. . .
1) Représenter l’arborescence.
2) Quelle commande peut faire hippolyte pour avoir une copie du fichier correction.pdf à la racine de son compte ?
En a-t-il le droit ?
3) Représenter les possibilités d’accès des 4 utilisateurs aux fichiers visioneurPDF, sujet.pdf, correction.pdf et
notes.ods, par un tableau à double entrée.
4) Élise peut-elle copier le fichier correction.pdf ? Peut-elle visualiser ce fichier ?
3/3