我正在使用的程序需要一个临时目录。但是,我想坚持使用POSIX.1-2001。在这种约束下,有没有办法使用tmpnam
?我知道安全问题,但这不是我关心的问题。我不使用它的原因是它在POSIX.1-2008中被标记为过时。什么时候将删除过时的功能?
在POSIX 2001(2004)中,您可能必须使用mktemp()
创建名称,然后使用mktemp()
创建具有该名称的目录。这可能导致符号链接等出现TOCTOU(检查时间,使用时间)问题。但是,尽管如此,mkdir()
函数未出现在POSIX 2008中(因此有时会删除这些函数),但是可能仍在每个系统的库中。两种版本的POSIX中都存在mktemp()
功能。
在POSIX 2008中,您可以改为使用tmpnam()
,它具有安全性优点。