jjzjj

c++ - 是否有任何理由避免使用 tmpnam() 来获取临时文件的名称?

我打算使用tmpnam()命名一个临时文件,稍后将重命名,而不是删除。但是我找到了以下文档,现在我对上面写的部分很感兴趣“...天真的程序员可能认为它是临时文件的合适名称。”来自http://man7.org/linux/man-pages/man3/tmpnam.3.htmlThetmpnam()functionreturnsapointertoastringthatisavalidfilename,andsuchthatafilewiththisnamedidnotexistatsomepointintime,sothatnaiveprogrammersmaythinkitasui

c++ - tmpnam 的 C/C++ 线程安全?

我需要在C++中使用tmpnam函数,但我需要了解它的线程安全性。也就是说,如果我有多个线程,每个线程都需要为一个临时文件获取不同的名称,我能保证每个线程都会收到一个不同名称的文件吗? 最佳答案 tmpnam仅保证该文件当时不存在-但它可能在您自己创建之前创建。为了安全地使用它,您将始终需要尝试创建打开的文件(文件名,O_CREAT|O_EXCL|O_NOFOLLOW)。如果由于EEXIST或ELOOP而失败,请返回并尝试一个新名称。这对于防止符号链接(symboliclink)攻击特别重要,在这种攻击中,另一个程序会创建一个从您的

c++ - tmpnam 警告说它很危险

我收到警告说tmpnam很危险,但我更喜欢使用它,因为它可以在Windows和Linux中按原样使用。我想知道为什么它会被认为是危险的(我猜这是因为可能被滥用,而不是它实际上无法正常工作)。 最佳答案 来自tmpnam手册页:Thetmpnam()functiongeneratesadifferentstringeachtimeitiscalled,uptoTMP_MAXtimes.IfitiscalledmorethanTMP_MAXtimes,thebehaviorisimplementationdefined.Although

c++ - tmpnam 警告说它很危险

我收到警告说tmpnam很危险,但我更喜欢使用它,因为它可以在Windows和Linux中按原样使用。我想知道为什么它会被认为是危险的(我猜这是因为可能被滥用,而不是它实际上无法正常工作)。 最佳答案 来自tmpnam手册页:Thetmpnam()functiongeneratesadifferentstringeachtimeitiscalled,uptoTMP_MAXtimes.IfitiscalledmorethanTMP_MAXtimes,thebehaviorisimplementationdefined.Although