2008-08-27 79 views
33

如何在Linux中找到'temp'目錄?我正在編寫一個平臺中立的C++函數,它返回臨時目錄。在Mac和Windows中,有一個API返回這些結果。在Linux中,我很難過。 如何在Linux中找到'temp'目錄?

回答

1

標準C,你可以嘗試:P_tmpdir

11

使用$ TMPDIR環境變量的值,如果不存在,使用/tmp

19

編輯:來自評論者的公平點。 tmpnam這幾天不是一個好選擇;改爲使用mktemp/mkstemp

歷史回答:符合POSIX標準,並使用tmpnam(它會給你一個臨時位置的完整文件名)。

+5

我爲tmpnam寫的linux手冊頁在它的BUGS部分說:「不要使用這個函數。使用mkstemp或tmpfile」 – ergosys 2012-03-10 04:22:22

26

檢查以下變量:

如果所有失敗嘗試使用目錄/tmp值。

您還可以使用tempnam函數來生成唯一的臨時文件名。

9

接受的序列,特別是從GNU的角度來看,是:

  1. 檢查環境變量TMPDIRGETENV( 「TMPDIR」))僅當 該程序不運行爲SUID/SGIDissetugid()== 0
  2. 否則使用P_tmpdir如果它被定義並且是有效
  3. 最後,應該這些失敗,請使用_PATH_TMP從paths.h

如果要添加分機或模塊,檢查是否核心爲此提供了一個功能。例如,PHP從main/php_open_temporary_file.h中導出php_get_temporary_directory()。

相關問題