umask(S_IWGRP|S_IWOTH); if (open("toto",O_RDWR|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR| S_IRGRP|S_IWGRP| S_IROTH|S_IWOTH)<0) fprintf(stderr,"Ouverture/Création impossible");
toto
n'existe pas,
toto
existe mais ne vous appartient pas et ses droits d'accès sont r--rw-r--
?
toto
existe, vous appartient, et ses droits sont r--rw-r--
?
// Programme P1 while ( (n=fread(buf,sizeof(char),taille,s)) > 0 ) fwrite(buf,sizeof(char),n,d);
// Programme P2 while ( (n=read(s,buf,taille)) > 0 ) write(d,buf,n);
Des mesures de l'exécution de ces deux portions de code avec des valeurs différentes pour le paramètre taille
ont conduit aux résultats suivants:
Temps (P1) | Temps (P2) | |||||
taille |
réel | util. | système | réel | util. | système |
16384 | 0.43 | 0.07 | 0.21 | 0.41 | 0.00 | 0.17 |
8192 | 0.44 | 0.02 | 0.22 | 0.41 | 0.00 | 0.23 |
4096 | 0.44 | 0.03 | 0.25 | 0.41 | 0.02 | 0.22 |
2048 | 0.44 | 0.02 | 0.26 | 0.44 | 0.04 | 0.34 |
1024 | 0.44 | 0.01 | 0.26 | 0.64 | 0.02 | 0.56 |
512 | 0.44 | 0.03 | 0.26 | 1.11 | 0.02 | 0.99 |
256 | 0.41 | 0.07 | 0.19 | 2.03 | 0.15 | 1.70 |
128 | 0.45 | 0.09 | 0.21 | 3.81 | 0.15 | 3.42 |
64 | 0.49 | 0.13 | 0.22 | 7.43 | 0.31 | 6.60 |
32 | 0.47 | 0.17 | 0.26 | 15.42 | 0.57 | 13.09 |
16 | 0.63 | 0.34 | 0.24 | 33.53 | 1.06 | 26.31 |
8 | 0.97 | 0.60 | 0.31 | 64.54 | 2.44 | 51.74 |
4 | 1.59 | 1.23 | 0.24 | 121.32 | 5.08 | 104.29 |
2 | 2.86 | 2.42 | 0.24 | 235.17 | 10.14 | 208.64 |
1 | 5.47 | 4.92 | 0.26 | 459.72 | 19.84 | 425.96 |
setvbuf(d,NULL,_IONBF,0)
while
, quel serait l'effet de cette modification sur les mesures d'exécution du programme P1 ?
poubelle
référence ...
qui prend au moins une référence de fichier ou répertoire en argument et déplace les objets correspondants dans un répertoire de nom .corbeille
(à créer si nécessaire) situé dans le répertoire privé de l'utilisateur.
vide
qui supprime le contenu du répertoire .corbeille
(s'il existe) situé dans le répertoire privé de l'utilisateur.
getenv("HOME");
qui renvoit un char *
.