我做了一个关于"匿名inode"的谷歌搜索,它似乎与epoll有关......但究竟是什么呢?
我正在用C++编写一个函数来创建一个临时目录.这样的功能应该尽可能地便携,例如它应该在linux,mac和win32环境下工作.我如何实现这一目标?
我正在写一个库。在我的一个单元测试中,我想创建一个临时文件,进行一些涉及该文件的库调用,并在退出时删除该文件(成功、失败和异常 - 清理很重要!)。
十多年前,有人问:如何在 C++ 中创建临时文本文件?。但是 - 答案要么是不可移植的,要么不是一个正确的完整解决方案(例如,您得到一个文件描述符,但没有明显的方式来获取名称,因此您无法按名称访问文件(std::tmpfile);您得到一个名称( std::tmpnam) 但不能确定它尚未使用;等等。)如果这个问题得到解决,我想我的问题将由围绕其中一些调用的一些 RAII 包装器来回答。但是 - 我关心当前的现实。
我的库必须可与 C++11 一起使用,因此如果可能的话,我更喜欢 C++11 解决方案。使用 Boost 是可以接受的,但不可取。
tmpfile() 函数说:
创建的临时文件在流关闭(fclose)或程序正常终止时自动删除。如果程序异常终止,文件是否被删除取决于具体的系统和库实现。”
tmpfile() 函数返回一个指向创建的临时文件的流指针,而不是文件的路径。我需要临时文件名路径,因为它需要传递其他库函数。
我的应用程序可以异常退出,所以 tmpfile() 函数可以在异常退出时在这里工作。
如何获取临时文件路径并在退出时自动删除文件
(注意:这不是一个重复的问题)
我正在使用 libc 函数tmpnam,并收到以下警告:
warning: the use of 'tmpnam' is dangerous, better use 'mkstemp'
Run Code Online (Sandbox Code Playgroud)
我的问题不是“如何禁用警告”,而是“我应该使用什么功能”?mkstemp没有帮助,因为我没有尝试创建临时文件 - 我正在创建一个临时目录。而且 AFAIK,没有用于此的 API 函数。
所以,如果我不应该使用tmpnam什么我我应该用?