Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::tmpfile

      From cppreference.com
      <cpp‎ |io‎ |c
       
       
       
       
      Defined in header<cstdio>
      std::FILE* tmpfile();

      Creates and opens a temporary file with a unique auto-generated filename.

      The file is opened as a binary file for update (as bystd::fopen with access mode"wb+"). At leastTMP_MAX files may be opened during the lifetime of a program (this limit may be shared withstd::tmpnam and may be further limited byFOPEN_MAX).

      If the program closes the file, e.g. by executingstd::fclose, the file is automatically deleted.

      If the program terminates normally (by callingstd::exit, returning frommain, etc), all files that were opened by callingstd::tmpfile are also automatically deleted.

      If the program terminates abnormally, it is implementation-defined if these temporary files are deleted.

      Contents

      [edit]Parameters

      (none)

      [edit]Return value

      The associated file stream or a null pointer if an error has occurred.

      [edit]Notes

      On some implementations (e.g. older Linux), this function actually creates, opens, and immediately deletes the file from the file system: as long as an open file descriptor to a deleted file is held by a program, the file exists, but since it was deleted, its name does not appear in any directory, so that no other process can open it. Once the file descriptor is closed, or once the program terminates (normally or abnormally), the space occupied by the file is reclaimed by the filesystem. Newer Linux (since 3.11 or later, depending on filesystem) creates such invisible temporary files in one step, via special flag in theopen() syscall.

      On some implementations (e.g. Windows), elevated privileges are required as the function may create the temporary file in a system directory.

      [edit]Example

      Run this code
      #include <cstdio>#include <cstdlib>#include <filesystem>#include <iostream>namespace fs= std::filesystem; int main(){std::cout<<"TMP_MAX = "<<TMP_MAX<<'\n'<<"FOPEN_MAX = "<<FOPEN_MAX<<'\n';std::FILE* tmpf= std::tmpfile();std::fputs("Hello, world", tmpf);std::rewind(tmpf);char buf[6];std::fgets(buf, sizeof buf, tmpf);std::cout<< buf<<'\n'; // Linux-specific method to display the tmpfile namestd::cout<< fs::read_symlink(                     fs::path("/proc/self/fd")/std::to_string(fileno(tmpf)))<<'\n';}

      Possible output:

      TMP_MAX = 238328FOPEN_MAX = 16Hello"/tmp/tmpfBlY1lI (deleted)"

      [edit]See also

      returns a unique filename
      (function)[edit]
      returns a directory suitable for temporary files
      (function)[edit]
      C documentation fortmpfile
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/c/tmpfile&oldid=158990"

      [8]ページ先頭

      ©2009-2025 Movatter.jp