【问题标题】:How do I find the 'temp' directory in Linux?如何在 Linux 中找到“临时”目录?
【发布时间】:2010-09-07 01:27:35
【问题描述】:

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

【问题讨论】:

    标签: c++ linux


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        编辑:评论者的公平点。 tmpnam 现在不是一个好选择;请改用mktemp/mkstemp

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

        【讨论】:

        • 我为 tmpnam 提供的 linux 手册页在其 BUGS 部分中说:“永远不要使用此函数。使用 mkstemp 或 tmpfile”
        • 我在 mktemp linux man page 上收到了同样的警告。而且我没有 mkstemptmpfile 命令(在 OSX 上)。
        • mkstemp 不能帮助您确定要使用的目录。
        • 这不会告诉你你提供的路径模板应该从哪里开始。
        【解决方案4】:

        检查以下变量:

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

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

        【讨论】:

        • 是否有一个标准(POSIX 或其他)指定这种做事顺序?我在好几个地方都看到过,所以我确定它是正确的,但我想知道是否有任何地方有权威声明。
        【解决方案5】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多