1) Le programme temp_file.c dont le code source est présenté ci-dessous contient
les fonctions write_temp_file et read_temp_file cependant la fonction main est vide. Imaginez
et écrivez des instructions dans main utilisant et illustrant une ou des utilisations possibles des
fonctions ci-dessus citées.

Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdlib.h>
#include <unistd.h>
/* Handle sur un fichier temporaire créé avec write_temp_file. Avec cette implémentation, il s'agit d'un descripteur de fichier.
*/
typedef int temp_file_handle;
/* Écrit LENGTH octets de BUFFER dans un fichier temporaire. Unlink est appelé immédiatement sur le fichier temporaire.
Renvoie un handle sur le fichier temporaire. */
temp_file_handle write_temp_file (char* buffer, size_t length)
{
/* Crée le nom du fichier et le fichier. XXXXXX sera remplacé par des caractères donnant un nom de fichier unique. */
char temp_filename[] = "/tmp/temp_file.XXXXXX";
int fd = mkstemp (temp_filename);
/* Appelle unlink immédiatement afin que le fichier soit supprimé dès que le descripteur sera fermé. */
unlink (temp_filename);
/* Écrit le nombre d'octets dans le fichier avant tout. */
write (fd, &length, sizeof (length));
/* Écrit des données proprement dites. */
write (fd, buffer, length);
/* Utilise le descripteur de fichier comme handle sur le fichier temporaire. */
return fd;
}
/* Lit le contenu du fichier temporaire TEMP_FILE créé avec write_temp_file. La valeur de retour est un tampon
nouvellement alloué avec ce contenu, que l'appelant doit libérer avec free.
*LENGTH est renseigné avec la taille du contenu, en octets.
Le fichier temporaire est supprimé. */
char* read_temp_file (temp_file_handle temp_file, size_t* length)
{
char* buffer;
/* Le handle sur TEMP_FILE est le descripteur du fichier temporaire. */
int fd = temp_file;
/* Se place au début du fichier. */
lseek (fd, 0, SEEK_SET);
/* Lit les données depuis le fichier temporaire. */
read (fd, length, sizeof (*length));
/* Alloue un buffer et lit les données. */
buffer = (char*) malloc (*length);
read (fd, buffer, *length);
/* Ferme le descripteur de fichier ce qui provoque la suppression du fichier temporaire. */
close (fd);
return buffer;
}
int main (void)
 
{
}