Scroll to navigation

mktemp(3) Library Functions Manual mktemp(3)

NAZWA

mktemp - tworzy unikalną nazwę pliku tymczasowego

BIBLIOTEKA

Standardowa biblioteka C (libc, -lc)

SKŁADNIA

#include <stdlib.h>
char *mktemp(char *template);

Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

mktemp():


Od glibc 2.12:
(_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200112L)
|| /* glibc >= 2.19: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
Przed glibc 2.12:
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500

OPIS

Proszę nigdy nie używać tej funkcji; zob. USTERKI.

Funkcja mktemp() tworzy unikalną nazwę pliku tymczasowego na podstawie template. Ostatnimi sześcioma znakami w template musi być XXXXXX; znaki te są zastępowane łańcuchem, który czyni nazwę pliku unikalną. Jako że zostanie on zmodyfikowany, template nie może być stałą łańcuchową, lecz należy go zadeklarować jako tablicę znaków.

WARTOŚĆ ZWRACANA

Funkcja mktemp() zawsze zwraca template. Jeśli utworzono unikalną nazwę, ostatnie sześć bajtów template będą zmodyfikowane w ten sposób, że wynikowa nazwa jest unikatowa (tj. nie występowała do tej pory). Jeśli nie można było utworzyć unikalnej nazwy, template będzie łańcuchem pustym i ustawiane jest errno, wskazując błąd.

BŁĘDY

Ostatnimi sześcioma znakami template nie były XXXXXX.

ATRYBUTY

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

Interfejs Atrybut Wartość
mktemp() Bezpieczeństwo wątkowe MT-bezpieczne

STANDARDY

4.3BSD, POSIX.1-2001. POSIX.1-2008 usuwa opis mktemp().

USTERKI

Proszę nigdy nie używać mktemp(). Niektóre implementacje stosują zasady z 4.3BSD, zastępując XXXXXX identyfikatorem bieżącego procesu i pojedynczą literą, tak więc zwrócone może być co najwyżej 26 różnych nazw. Jako że z jednej strony nazwy te są łatwe do odgadnięcia, a z drugiej strony występuje wyścig pomiędzy sprawdzeniem, czy nazwa istnieje i otwarciem pliku, każde zastosowanie mktemp() stanowi zagrożenie bezpieczeństwa. Wyścigu można uniknąć, używając mkstemp(3) i mkdtemp(3).

ZOBACZ TAKŻE

mktemp(1), mkdtemp(3), mkstemp(3), tempnam(3), tmpfile(3), tmpnam(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.

5 lutego 2023 r. Linux man-pages 6.03