c - 如何获得临时文件名?

标签 c unix temporary-files temporary-directory

我看过一些与我的问题相关的帖子,但没有一个能完全解决它。我需要在标准临时目录中创建一个文件,并在完成写入后将其移动到其他位置。这个想法是,该文件在下载时被视为临时文件,在下载完成后被视为永久文件。

我正在尝试通过调用 mkstemptmpfile , 然后 rename在我写完之后。但是,我需要文件的完整路径来调用重命名,显然从文件描述符(由 mkstemp 返回)或 FILE *(由 tmpfile 返回)获取文件名不是一个简单的过程。可以做到,但不够优雅。

是否有一个系统调用可以创建一个临时文件并为我提供名称?我知道 mktemp和相关调用,但它们要么不能保证是唯一的,要么已被弃用。或者也许有更好的方法来完成创建、写入和移动临时文件。

最佳答案

看起来像mkstemp实际上是要走的路。

int fd;
char name[] = "/tmp/fileXXXXXX";
fd = mkstemp(name);
/* Check fd. */

在这个调用之后,您在 fd 中有一个有效的描述符,在 name 中有关联文件的名称。

关于c - 如何获得临时文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12008243/

相关文章:

c - 自由(): invalid next size (fast) in C

Shell 脚本 : Execute command after running "exit" command in the shell script

c - Realpath 要求文件存在

python - 在 Windows 上打印到 NamedTemporaryFile

c# - 如果我创建一个临时文件并非常频繁地修改它,这是否会对磁盘造成负担?

c - 对音频信号应用滤波器时的不同输出

指示内存对齐要求的编译器常量

c++ - 使用 Ninja 构建系统,我可以清理中间构建产品吗?

linux - 如何在 Linux/Unix 上递归复制以 "abc"开头的目录?

c# - 在小型 .NET 程序中管理临时文件