Cen*_*noc 25 c++ temporary-files
我得到这个警告说tmpnam是危险的,但我更喜欢使用它,因为它可以在Windows和Linux中使用.我想知道为什么它会被认为是危险的(我猜它是因为有可能被误用而不是实际上没有正常工作).
Sch*_*ron 26
来自tmpnam手册页:
tmpnam()函数每次调用时都会生成一个不同的字符串,最多可达TMP_MAX次.如果调用的次数超过TMP_MAX次,则行为是实现定义的.
虽然tmpnam()生成难以猜测的名称,但是在tmpnam()返回路径名的时间和程序打开它的时间之间,另一个程序可能使用open(2)创建该路径名,或者将其创建为符号链接.这可能导致安全漏洞.要避免这种可能性,请使用open(2)O_EXCL标志打开路径名.或者更好的是,使用mkstemp(3)或tmpfile(3).
Mktemp确实创建了文件,所以你确信它有效,而tmpnam返回一个名字,可能已经存在了.