Scroll to navigation

tmpnam(3) Library Functions Manual tmpnam(3)

NAZWA

tmpnam, tmpnam_r - tworzy nazwę dla pliku tymczasowego

BIBLIOTEKA

Standardowa biblioteka C (libc, -lc)

SKŁADNIA

#include <stdio.h>
[[przestarzałe]] char *tmpnam(char *s);
[[przestarzałe]] 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 włącznie:
_BSD_SOURCE || _SVID_SOURCE

OPIS

Uwaga: proszę unikać korzystania z tych funkcji, należy używać w zamian mkstemp(3) lub tmpfile(3).

Funkcja tmpnam() zwraca wskaźnik do łańcucha będącego prawidłową nazwą pliku i takiego, że plik o tej samej nazwie nie istnieje w jakimś punkcie czasu, co powoduje że naiwni programiści mogą uznać go za odpowiednią nazwę dla pliku tymczasowego. Jeśli argumentem s jest NULL, to nazwa jest generowana w wewnętrznym statycznym buforze i może być nadpisana przez następne wywołanie do tmpnam(). Jeśli s nie wynosi NULL, nazwa jest kopiowana do macierzy znaków (długości co najmniej L_tmpnam), na którą wskazuje s, a wartość s jest zwracana w przypadku powodzenia.

Tworzona nazwa ścieżki ma przedrostek katalogu P_tmpdir (zarówno L_tmpnam jak i P_tmpdir są zdefiniowane w <stdio.h>, podobnie jak wspomniane niżej TMP_MAX).

Funkcja tmpnam_r() przeprowadza to samo zadanie co tmpnam(), lecz zwraca NULL (aby wskazać błąd), jeśli s wynosi NULL.

WARTOŚĆ ZWRACANA

Funkcje zwracają wskaźnik do unikalnej nazwy pliku tymczasowego lub NULL, jeśli nie można wygenerować unikalnej nazwy.

BŁĘDY

Nie zdefiniowano błędów.

ATRYBUTY

Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).

Interfejs Atrybut Wartość
tmpnam() Bezpieczeństwo wątkowe MT-niebezpieczne race:tmpnam/!s
tmpnam_r() Bezpieczeństwo wątkowe MT-bezpieczne

STANDARDY

C11, POSIX.1-2008.
Brak.

HISTORIA

SVr4, 4.3BSD, C89, POSIX.1-2001. Przestarzałe w POSIX.1-2008.
Solaris.

UWAGI

Funkcja tmpnam() tworzy odmienny łańcuch za każdym razem, gdy jest wywoływana, aż do TMP_MAX razy. Jeśli jest wywołana więcej niż TMP_MAX razy, zachowanie zależy od implementacji.

Choć funkcje te tworzą nazwy, które są trudne do odgadnięcia, mimo to możliwe jest, aby pomiędzy czasem gdy nazwa ścieżki zostanie zwrócona, a czasem gdy program ją otworzy, inny program utworzył tę samą nazwę ścieżki za pomocą open(2) lub utworzył ją jako dowiązanie symboliczne. Może to skutkować lukami bezpieczeństwa. Aby uniknąć takiej ewentualności, proszę stosować znacznik O_EXCL open(2), aby otworzyć nazwę ścieżki. Jeszcze lepszym rozwiązaniem jest korzystanie z mkstemp(3) lub tmpfile(3).

Przenośne aplikacje, korzystające z wątków, nie mogą wywołać tmpnam() z argumentem NULL, jeśli zdefiniowano _POSIX_THREADS lub _POSIX_THREAD_SAFE_FUNCTIONS.

USTERKI

Nigdy nie należy korzystać z tych funkcji. W zamian należy używać mkstemp(3) lub tmpfile(3).

ZOBACZ TAKŻE

mkstemp(3), mktemp(3), tempnam(3), tmpfile(3)

TŁUMACZENIE

Tłumaczenie niniejszej strony podręcznika: Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.

2 maja 2024 r. Linux man-pages 6.9.1