Provided by: manpages-pl-dev_4.27.0-1_all bug

NAZWA

       mkstemp, mkostemp, mkstemps, mkostemps - tworzy unikalny plik tymczasowy

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <stdlib.h>

       int mkstemp(char *template);
       int mkostemp(char *template, int flags);
       int mkstemps(char *template, int suffixlen);
       int mkostemps(char *template, int suffixlen, int flags);

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

       mkstemp():
           _XOPEN_SOURCE >= 500
               || /* glibc >= 2.12: */ _POSIX_C_SOURCE >= 200809L
               || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

       mkostemp():
           _GNU_SOURCE

       mkstemps():
           /* glibc >= 2.19: */ _DEFAULT_SOURCE
               || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

       mkostemps():
           _GNU_SOURCE

OPIS

       Funkcja  mkstemp()  generuje  unikalną  nazwę  pliku  tymczasowego z template, tworzy i otwiera plik oraz
       zwraca deskryptor otwartego pliku.

       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.

       Plik jest tworzony z uprawnieniami 0600 tj. odczyt i zapis tylko  dla  właściciela.  Zwracany  deskryptor
       pliku zapewnia dostęp do odczytu i do zapisu do pliku. Plik jest otwierany ze znacznikiem O_EXCL open(2),
       co gwarantuje, że wywołujący jest procesem tworzącym plik.

       Funkcja  mkostemp() działa jak mkstemp(), z tą różnicą, że następujące bity — o znaczeniu takim samym jak
       w open(2) — można przekazać we flags: O_APPEND, O_CLOEXEC i O_SYNC. Proszę  zauważyć,  że  tworząc  plik,
       mkostemp()  zawiera  wartości  O_RDWR,  O_CREAT  i  O_EXCL  w  argumencie flags przekazywanym do open(2);
       dołączanie tych wartości w argumencie flags przekazywanym mkostemp() jest niepotrzebne, a  na  niektórych
       systemach zwraca błąd.

       Funkcja mkstemps() działa jak mkstemp() z tą różnicą, że łańcuch w template zawiera przyrostek o długości
       suffixlen  znaków.  Z  tego względu template ma postać przedrostekXXXXXXprzyrostek, a łańcuch XXXXXX jest
       modyfikowany przez mkstemp().

       Funkcja mkostemps() jest w stosunku do mkstemps() tym, czym mkostemp() jest dla funkcji mkstemp().

WARTOŚĆ ZWRACANA

       Po pomyślnym zakończeniu funkcje te zwracają deskryptor pliku dla pliku tymczasowego. Po błędzie zwracane
       jest -1 i ustawiane errno wskazując błąd.

BŁĘDY

       EEXIST Nie  można  utworzyć  unikalnej  nazwy  pliku  tymczasowego.   Zawartość   template   jest   teraz
              niezdefiniowana.

       EINVAL Dla  mkstemp()  i  mkostemp():  Ostatnimi sześcioma znakami template nie były XXXXXX; template nie
              uległo zmianie.

              Dla mkstemps() i mkostemps(): template jest krótsze niż (6 + suffixlen) znaków  albo  ostatnimi  6
              znakami w template przed przyrostkiem nie było XXXXXX.

       Funkcje te mogą również zawieść z dowolnym błędem opisanym dla open(2).

ATRYBUTY

       Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
       ┌──────────────────────────────────────────────────────────────┬────────────────────────┬───────────────┐
       │ InterfejsAtrybutWartość       │
       ├──────────────────────────────────────────────────────────────┼────────────────────────┼───────────────┤
       │ mkstemp(), mkostemp(), mkstemps(), mkostemps()               │ Bezpieczeństwo wątkowe │ MT-bezpieczne │
       └──────────────────────────────────────────────────────────────┴────────────────────────┴───────────────┘

STANDARDY

       mkstemp()
              POSIX.1-2001.

       mkstemps()
              BSD.

       mkostemp()
       mkostemps()
              GNU.

HISTORIA

       mkstemp()
              4.3BSD, POSIX.1-2001.

       mkstemps()
              glibc 2.11.  BSD, Mac OS X, Solaris, Tru64.

       mkostemp()
              glibc 2.7.

       mkostemps()
              glibc 2.11.

       W  wersjach  glibc  2.06  i  wcześniejszych,  tworzony  plik  ma  uprawnienia 0666 tj. odczyt i zapis dla
       wszystkich. To stare zachowanie może stanowić zagrożenie bezpieczeństwa, szczególnie ze względu, że  inne
       odmiany  Uniksa  używają  0600  i  ktoś  mógłby pominąć ten detal przy portowaniu programów. POSIX.1-2008
       dodaje wymóg, aby ten plik był tworzony z trybem 0600.

       Ogólniej, norma POSIX wobec mkstemp() nie mówi nic o trybach pliku, zatem aplikacje powinny się  upewnić,
       że  ich maska trybu tworzonych plików (zob. umask(2)) jest właściwie ustawiona przed wywołaniem mkstemp()
       (i mkostemp()).

ZOBACZ TAKŻE

       mkdtemp(3), mktemp(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.

Linux man-pages 6.9.1                            2 maja 2024 r.                                       mkstemp(3)