在线文档教程
C++
输入/输出 | Input/output

std::tmpfile

STD::tmpfile

Defined in header
std::FILE* tmpfile(

创建并打开具有唯一自动生成文件名的临时文件。

该文件以二进制文件的形式打开,以便通过以下方式更新%28 ASstd::fopen接入方式"wb+"29%。至少TMP_MAX可以在程序的生存期内打开文件%28,此限制可与std::tmpnam而且可能会进一步受到以下因素的限制FOPEN_MAX29%。

如果程序关闭文件,例如通过执行std::fclose文件自动删除。

如果程序通常通过调用%28终止std::exit,从main,etc%29,所有通过调用打开的文件std::tmpfile也会自动删除。

如果程序异常终止,则如果删除这些临时文件,则为实现定义。

参数

%280%29

返回值

关联的文件流或NULL如果发生错误。

注记

在某些实现上%28例如。Linux%29,此函数实际上创建、打开并立即从文件系统删除文件:只要程序保存已删除文件的打开文件描述符,该文件就存在,但由于文件已被删除。它的名称不会出现在任何目录中,因此没有其他进程可以打开它。一旦文件描述符关闭,文件系统就会回收文件占用的空间。

在某些实现上%28例如。Windows%29,需要提升的特权,因为函数可能在系统目录中创建临时文件。

二次

#include <iostream> #include <cstdio> #include <cstdlib> #include <filesystem> namespace fs = std::filesystem; int main() { 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 name std::cout << fs::read_symlink( fs::path("/proc/self/fd") / std::to_string(fileno(tmpf)) ) << '\n'; }

二次

可能的产出:

二次

Hello "/tmp/tmpfBlY1lI (deleted)"

二次

另见

tmpnamreturns a unique filename (function)
temp_directory_path (C++17)returns a directory suitable for temporary files (function)

tmpfile的C文档

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/io/c/tmpfile