首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::tmpfile

Defined in header <cstdio>

?

?

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,需要提升的特权,因为函数可能在系统目录中创建临时文件。

二次

代码语言:javascript
复制
#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';
}

二次

可能的产出:

二次

代码语言:javascript
复制
Hello
"/tmp/tmpfBlY1lI (deleted)"

二次

另见

tmpnam

returns a unique filename (function)

temp_directory_path (C++17)

returns a directory suitable for temporary files (function)

tmpfile的C文档

代码语言:txt
复制
 ? cppreference.com

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

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com