How do I find the 'temp' directory in Linux? I am writing a platform neutral C++ function that returns the temp directory. In Mac and Windows, there is an API that returns these results. In Linux, I'm stumped.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Check following variables:
- The environment variable
TMPDIR
- The value of the
P_tmpdir
macro
If all fails try to use the directory /tmp
.
You can also use tempnam
function to generate a unique temporary file name.
回答2:
Edit: Fair point from the commenter. tmpnam
isn't a good choice these days; use mktemp
/mkstemp
instead.
Historical answer: Be POSIX compliant, and use tmpnam (which will give you a full filename in a temporary location).
回答3:
Use the value of the $TMPDIR environment variable, and if that doesn't exist, use /tmp
.
回答4:
The accepted sequence, specifically from a GNU standpoint, is:
- Check the environmental variable TMPDIR (getenv("TMPDIR")) only if the program is not running as SUID/SGID (issetugid() == 0)
- Otherwise use P_tmpdir if it is defined and is valid
- and finally, should those fail, use _PATH_TMP available from paths.h
If you are adding an extension or module, check to see if the core provides a function for this purpose. For example, PHP exports php_get_temporary_directory() from main/php_open_temporary_file.h.
回答5:
In standard c, you could try: P_tmpdir