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

tmpnam()
    C11, POSIX.1-2008.

tmpnam_r()
    Brak.

HISTORIA

tmpnam()
    SVr4, 4.3BSD, C89, POSIX.1-2001. Przestarzałe w POSIX.1-2008.

tmpnam_r()
    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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.