Créer des fichiers temporaires

Problème

Vous souhaitez créer un fichier temporaire ou tout autre fichier avec un nom unique.

Solution

Utilisez mktemp().

Discussion

La fonction mktemp() permet de créer un nom de fichier unique en fonction d’un modèle formé d’un nom de fichier et de six lettres X à la fin. Voici un exemple créant un nom de fichier à partir d’un nom existant :


char * 
mon_mkstemp (const char *filename) 
{ 
  char *result; 
  int l = strlen (filename); 
  if (NULL == (result = malloc ((l + 8) * sizeof *result))) 
    return (NULL); 
  memcpy (result, filename, l); 
  result[l] = '.'; 
  memset (result + l + 1, 'X', 6); 
  result[result + l + 8] = '\0'; 
  return (mktemp (result)); 
}
 

Si vous souhaitez créer le fichier en même temps que son nom, vous pouvez utiliser mkstemp() qui renvoie un descripteur du fichier, ouvert avec l’attribut O_EXCL. Mais cette façon de procéder est à relativiser car en fonction du nom de fichier fourni en modèle, il y a peu de chances qu’un autre fichier soit créé avec le même nom (par pur hasard) au même instant.

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Poser un verrou sur un fichier
Suivant
Lire en continu dans un fichier qui croît