38

如何在 Linux 中找到“临时”目录?我正在编写一个平台中立的 C++ 函数,它返回临时目录。在 Mac 和 Windows 中,有一个 API 可以返回这些结果。在 Linux 中,我很困惑。

4

5 回答 5

31

检查以下变量:

如果全部失败,请尝试使用该目录/tmp

您还可以使用tempnam函数生成唯一的临时文件名。

于 2008-08-27T20:06:25.840 回答
19

编辑:评论者的公平点。tmpnam这些天不是一个好的选择;使用mktemp/mkstemp代替。

历史答案:符合 POSIX,并使用 tmpnam (它将在临时位置为您提供完整的文件名)。

于 2008-08-27T20:00:04.373 回答
12

使用 $TMPDIR 环境变量的值,如果不存在,使用/tmp.

于 2008-08-27T19:59:13.847 回答
11

接受的序列,特别是从 GNU 的角度来看,是:

  1. 仅当程序未以SUID/SGID ( issetugid() == 0 )运行时检查环境变量TMPDIR ( getenv("TMPDIR") )
  2. 否则,如果P_tmpdir已定义且有效,则使用它
  3. 最后,如果这些失败,请使用path.h 中提供的 _PATH_TMP

如果您要添加扩展或模块,请检查核心是否为此提供了功能。例如,PHP 从 main/php_open_temporary_file.h 导出 php_get_temporary_directory()。

于 2013-08-29T01:38:22.887 回答
1

在标准 c 中,您可以尝试:P_tmpdir

于 2008-08-27T19:59:08.667 回答