当前位置:  开发笔记 > 编程语言 > 正文

如何获取在Linux中使用的临时文件的文件名?

如何解决《如何获取在Linux中使用的临时文件的文件名?》经验,为你挑选了2个好方法。

假设我在C中创建一个需要使用临时文件的程序.在/ tmp中创建临时临时文件可能不是一个好主意.是否有函数或OS调用为我提供临时文件名,以便我可以开始写入和读取它?



1> gavrie..:

您可以将此mkstemp(3)功能用于此目的.另一种选择是tmpfile(3)功能.您选择哪一个取决于您是希望将文件作为C库文件流(哪个tmpfile)或直接文件描述符(mkstemp)打开.tmpfile编程完成后,该功能也会自动删除文件.

使用这些功能的优点是它们可以避免在确定唯一文件名和创建文件之间的竞争条件 - 例如,两个程序不会同时尝试创建同一个文件.

有关更多详细信息,请参阅这两个函数的手册页.



2> Mark Borgerd..:

问题是如何生成临时文件.mkstemp和tmpfile都没有为调用者提供名称,它们分别返回文件描述符或文件句柄.


不正确:mkstemp*会为调用者提供一个名称,因为它会修改给定的模板.调用者需要提供一个模板,但这是一个相对简单的选择临时目录(例如$ TMPDIR,P_tmpdir或"/ tmp")和前缀,后跟六个X的问题.
@Mark:一旦你取消文件名链接,就不能再保证它的独特性了.尝试获取唯一文件名而不将其作为*相同操作*的一部分创建的问题从根本上是错误的.需要存在该文件作为锁.
推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有