Scroll to navigation

tmpnam(3) 2007-10-27-16:31 tmpnam(3)

Назва

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)

2007-10-27-16:31 © 2005-2007 DLOU, GNU FDL