Назва
tmpnam, tmpnam_r - створюють назву для тимчасового файлу
Огляд
#include <stdio.h>
char tmpnam(char s);
Опис
Функція tmpnam() повертає покажчик на ланцюжок, що буде чинною назвою для файлу, тож файл з також назвою не існуватиме у даний момент, отже наївні програмісти зможуть подумати, що це придатне ім'я для тимчасового файлу. Якщо аргумент s має значення NULL, цю назву буде генеровано як внутрішній статичний буфер і може бути перезаписано наступним викликом tmpnam(). Якщо ж не NULL, назву копійовано до символьного масиву (довжиною щонайменше L_tmpnam), на який показує s і значення s буде повернуто у випадку вдачі.
Новостворена назва шляху матиме як каталоговий префікс P_tmpdir. (Обидва, L_tmpnam і P_tmpdir означено у <stdio.h>, так само як TMP_MAX, згаданий нижче.)
Повернені значення
Функція tmpnam() повертає покажчик на унікальну назву для тимчасового файлу або NULL, якщо унікальну назву неможливо генерувати.
Помилки
Жодних помилок не означено.
Примітки
Функція tmpnam() утворює новий ланцюжок кожного разу, як її викликано до TMP_MAX разів. Якщо її викликати більше ніж TMP_MAX раз, поводження залежатиме від реалізації.
Переносимі додатки з використанням програмних каналів не можуть вживати tmpnam() з параметром NULL, якщо зазначено POSIX_THREADS або POSIX_THREAD_SAFE_FUNCTIONS.
Чорновик POSIX запропонував застосування функції tmpnam_r(), означеної як
char *tmpnam_r(char *s) {
return s ? tmpnam(s) : NULL;
}
очевидно, як застереження від використання NULL. Деякі системи втілили це в життя. Для застосування прототипу цієї функції з glibc, зазначте SVID_SOURCE або BSD_SOURCE перед включенням <stdio.h>.
Вади
Ніколи не використовуйте цю функцію, скористайтеся ?mkstemp(3) натомість.
Відповідність стандартам
SVID 2, POSIX, BSD 4.3, ISO 9899
Дивіться також
?mktemp(3), ?mkstemp(3), ?tempnam(3), tmpfile(3)