使用 POSIX.1-2001 创建临时目录

Make temporary directory with POSIX.1-2001

我正在处理的程序需要一个临时目录。但是,我想坚持 POSIX.1-2001。有了这个约束,有没有办法绕过使用 tmpnam?我知道安全问题,但这不是我关心的问题。我不使用它的原因是它在 POSIX.1-2008 中被标记为过时。过时的功能什么时候会被移除?

在 POSIX 2001 (2004) 中,您可能必须使用 mktemp() 创建名称,然后使用 mkdir() 创建具有该名称的目录。这可能会导致符号链接等出现 TOCTOU(检查时间、使用时间)问题。但是,话虽如此,mktemp() 函数并未出现在 POSIX 2008 中(因此函数是有时会删除),但它可能仍在每个系统的库中。 tmpnam() 函数存在于 POSIX.

的两个版本中

在 POSIX 2008 年,您可以改用 mkdtemp(),这具有安全优势。