C: Временные файлы

В некоторых случаях приложению может потребоваться сохранить определенные используемые в процессе работы программы данные во временном файле.

Создание временного файла осуществляется на основе специально созданного шаблона его имени.

char template[] = "/tmp/testXXXXXX";

Функция mkstemp() создает временный файл и возвращает его дескриптор в случае отсутствия ошибок или значение -1, если файл создать не удалось. Функция модифицирует строку с шаблоном имени файла таким образом, чтобы она отражала реальное имя созданного временного файла, поэтому эта строка не должна быть неизменяемой.

fd = mkstemp(template);

Подробнее о работе с файлами в C сказано в данном разделе. Следует также учесть тот факт, что функция mkstemp() возвращает не указатель на структуру FILE, а файловый дескриптор. Для того, чтобы получить указатель на эту структуру из доступного файлового дескриптора, следует воспользоваться функцией fdopen().

file = fdopen(fd, "w");

Разумеется, вы можете использовать созданный временный файл так, как вам нужно, не забыв после использования закрыть его дескриптор с помощью функции close() и удалить его из файловой системы с помощью функции unlink(), принимающей путь к нему в качестве аргумента.

close(fd);
unlink(template);

Пример

В примере осуществляется создание и удаление временного файла. Сгенерированное имя файла демонстрируется пользователю.

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7.     char template[] = "/tmp/testXXXXXX";
  8.     int filedes = -1;
  9.  
  10.     filedes = mkstemp(template);
  11.  
  12.     printf("%sn", template);
  13.  
  14.     unlink(template);
  15.  
  16.     return 0;
  17. }

Загрузить исходный код примера