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

EINVAL
    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
Brak.

HISTORIA
4.3BSD, POSIX.1-2001. Usunięte w POSIX.1-2008.

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 (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.