tmpnam(3) Library Functions Manual tmpnam(3) NAZWA tmpnam, tmpnam_r - tworzy nazwe dla pliku tymczasowego BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include [[przestarzale]] char *tmpnam(char *s); [[przestarzale]] char *tmpnam_r(char *s); Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)): tmpnam_r() Od glibc 2.19: _DEFAULT_SOURCE Do glibc 2.19 wlacznie: _BSD_SOURCE || _SVID_SOURCE OPIS Uwaga: prosze unikac korzystania z tych funkcji, nalezy uzywac w zamian mkstemp(3) lub tmpfile(3). Funkcja tmpnam() zwraca wskaznik do lancucha bedacego prawidlowa nazwa pliku i takiego, ze plik o tej samej nazwie nie istnieje w jakims punkcie czasu, co powoduje ze naiwni programisci moga uznac go za odpowiednia nazwe dla pliku tymczasowego. Jesli argumentem s jest NULL, to nazwa jest generowana w wewnetrznym statycznym buforze i moze byc nadpisana przez nastepne wywolanie do tmpnam(). Jesli s nie wynosi NULL, nazwa jest kopiowana do macierzy znakow (dlugosci co najmniej L_tmpnam), na ktora wskazuje s, a wartosc s jest zwracana w przypadku powodzenia. Tworzona nazwa sciezki ma przedrostek katalogu P_tmpdir (zarowno L_tmpnam jak i P_tmpdir sa zdefiniowane w , podobnie jak wspomniane nizej TMP_MAX). Funkcja tmpnam_r() przeprowadza to samo zadanie co tmpnam(), lecz zwraca NULL (aby wskazac blad), jesli s wynosi NULL. WARTOSC ZWRACANA Funkcje zwracaja wskaznik do unikalnej nazwy pliku tymczasowego lub NULL, jesli nie mozna wygenerowac unikalnej nazwy. BLEDY Nie zdefiniowano bledow. ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +---------+--------------------------+---------------------------------+ |Interfejs| Atrybut | Wartosc | +---------+--------------------------+---------------------------------+ |tmpnam() | Bezpieczenstwo watkowe | MT-niebezpieczne race:tmpnam/!s | +---------+--------------------------+---------------------------------+ |tmpnam_r()|Bezpieczenstwo watkowe | MT-bezpieczne | +---------+--------------------------+---------------------------------+ STANDARDY tmpnam() C11, POSIX.1-2008. tmpnam_r() Brak. HISTORIA tmpnam() SVr4, 4.3BSD, C89, POSIX.1-2001. Przestarzale w POSIX.1-2008. tmpnam_r() Solaris. UWAGI Funkcja tmpnam() tworzy odmienny lancuch za kazdym razem, gdy jest wywolywana, az do TMP_MAX razy. Jesli jest wywolana wiecej niz TMP_MAX razy, zachowanie zalezy od implementacji. Choc funkcje te tworza nazwy, ktore sa trudne do odgadniecia, mimo to mozliwe jest, aby pomiedzy czasem gdy nazwa sciezki zostanie zwrocona, a czasem gdy program ja otworzy, inny program utworzyl te sama nazwe sciezki za pomoca open(2) lub utworzyl ja jako dowiazanie symboliczne. Moze to skutkowac lukami bezpieczenstwa. Aby uniknac takiej ewentualnosci, prosze stosowac znacznik O_EXCL open(2), aby otworzyc nazwe sciezki. Jeszcze lepszym rozwiazaniem jest korzystanie z mkstemp(3) lub tmpfile(3). Przenosne aplikacje, korzystajace z watkow, nie moga wywolac tmpnam() z argumentem NULL, jesli zdefiniowano _POSIX_THREADS lub _POSIX_THREAD_SAFE_FUNCTIONS. USTERKI Nigdy nie nalezy korzystac z tych funkcji. W zamian nalezy uzywac mkstemp(3) lub tmpfile(3). ZOBACZ TAKZE mkstemp(3), mktemp(3), tempnam(3), tmpfile(3) TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.15 17 maja 2025 r. tmpnam(3)