- 1.
- Si l'on possède un descripteur ouvert sur le fichier alors le système
n'effectuera au plus que 4 accès disques (en supposant que l'inoeud est
déjà chargé en mémoire). Ce cas se présente lorsque le caractère à lire est
situé au dernier niveau d'indirection, donc : 1 accès pour le premier bloc
d'indirection, 1 accès pour le suivant, 1 accès pour le suivant puis un
dernier accès pour le bloc contenant l'octet recherché.
L'idée à retenir ici étant que le nombre d'accès disque nécessaires pour
retrouver un caractère dans un fichier est toujours borné.
- 1.
- Le fichier est la propriété de l'utilisateur de nom
yunes
et
du groupe staff
. On peut donc dire que:
- l'utilisateur
yunes
peut consulter son contenu et
eventuellement l'exécuter (il est vide!)
- les membres du groupe
staff
(sauf yunes
s'il en est membre) peuvent consulter et modifier son contenu
- les autres qui ne sont ni
yunes
ni membres du groupe
staff
peuvent tenter de l'exécuter (il est vide!)
- 2.
- Il n'est pas possible de répondre à cette question de façon précise car le
droit de supprimer une référence est lié au droit d'écriture sur le répertoire
qui contient cette référence. D'autre part pour pouvoir détruire un fichier il
faut pouvoir le nommer et donc posséder le droit d'utiliser son nom dans une
référence. Sont donc autorisés à détruire ce fichier ceux qui possèdent à la
fois le droit d'écriture et le droit d'exécution sur le répertoire contenant
cette référence.
- 1.
- Cette commande sert à capturer l'entrée standard et à la
reproduire à l'identique en sortie standard tout en la repliquant dans divers
fichiers passés en paramètres. On peut imaginer l'utiliser afin de capturer
au vol le résultat d'une exécution d'un programme. Par exemple :
tee entree_standard | programme_de_mon_choix | tee
sortie_standard
- 2.
- Voici une écriture possible :
- 1.
- Le fichier
f
devrait contenir abcdefghij123456kl
.
En effet il faut remarquer que le fichier est ouvert en mode
a+
qui correspond à une ouverture en lecture/ajout. Donc toutes
les écritures seront effectuées à la fin du fichier quoi qu'il se passe. Pour
cela le descripteur fileno(f)
a été ouvert en utilisant
O_APPEND
(entre autres). D'autre part le tampon de
lecture/écriture est de taille 10
et utilise la politique de
vidage _IOFBF
(c'est à dire que le tampon est vidé lorsqu'il est
plein). La première écriture fprintf()
est réalisée à travers le
tampon, donc lorsque les 10
premiers caractères remplissent le
tampon celui-ci est vidé (écriture dans le fichier des caractères
abcdefghij
), ensuite les deux derniers caractères kl
sont stockés dans le tampon. Alors l'écriture par write()
est
réalisée directement dans le fichier (en mode ajout donc à la suite des 10
premiers. Et pour terminer l'appel à fclose()
vide le tampon en
écrivant les deux caractères restant en fin de fichier.
- 2.
- La politique de vidage du tampon est modifiée.
_IONBF
permet
de ne plus utiliser le tampon. Donc le fichier f
devrait contenir
abcdefghijkl123456
.
- 3.
- L'effet visible sera la position de la chaine
123456
dans le
fichier f
.
- 4.
- Les écritures étant en mode ajout l'effet de
lseek()
est nul
en ce qui concerne les écritures.
Jean-Baptiste Yunes
2000-02-15