我看过一些与我的问题相关的帖子,但没有一个能完全解决这个问题。我需要在标准临时目录中创建一个文件,完成写入后,将其移动到其他位置。这个想法是,该文件在下载时被视为临时文件,在下载完成后被视为永久文件。
我正在尝试通过致电mkstemp http://www.linuxmanpages.com/man3/mkstemp.3.php or tmpfile http://www.linuxmanpages.com/man3/tmpfile.3.php, then rename http://www.linuxmanpages.com/man2/rename.2.php当我写完之后。但是,我需要文件的完整路径来调用重命名,并且显然从文件描述符(由 mkstemp 返回)或 FILE *(由 tmpfile 返回)获取文件名并不是一个简单的过程。这是可以做到的,但并不优雅。
是否有系统调用可以创建临时文件并为我提供名称?我知道关于mktemp http://www.linuxmanpages.com/man3/mktemp.3.php和相关的调用,但它们要么不能保证是唯一的,要么已被弃用。或者也许有更好的方法来完成创建、写入和移动临时文件。
看起来像mkstemp http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkstemp.html实际上是要走的路。
int fd;
char name[] = "/tmp/fileXXXXXX";
fd = mkstemp(name);
/* Check fd. */
在此调用之后,您将获得一个有效的描述符fd
以及相关文件的名称name
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)