对于在/tmp
中创建临时目录的任务,
对于可移植代码,如何在mkdtemp
,mkstemp
等之间进行选择?
答案 0 :(得分:12)
我认为您需要在其他用户可能具有写权限的目录中创建临时目录。
作为管理员,您应该进行设置,以便每个用户都有自己的TMPDIR
(例如使用pam-tmpdir - 或者更好地使用per-process namespaces,但需要更多设置)。但是,作为一个应用程序编写者,你不能假设这一点,所以你需要应对一个世界可写的/tmp
。
这里的正确功能是mkdtemp
,因为mkstemp
只能创建常规文件。 mkdtemp
仅在POSIX.1 2008中引入,因此原则上它可能尚未在所有POSIX平台上提供。但是,它已经在主要平台上使用了很长时间:
因此,在实践中,您可以安全地使用mkdtemp
。如果您需要回退,请在源代码中包含OpenBSD实现。