每个进程的临时目录

每个进程的临时目录

是否"standard"有为单个进程分配的临时目录目录随进程本身一起消失?看起来像/proc/$pid/tmp或 的东西/proc/self/tmp。有许多临时目录:系统全局临时目录、用户特定临时目录、持久目录和重新启动时清除的临时目录tmpfs等。

每个进程都有一个临时目录听起来像是一个常识,但我找不到。

答案1

不,每个进程的临时文件没有标准的甚至模糊的通用位置。原因是每个进程的临时文件非常罕见。临时文件的目的几乎总是在进程之间交换数据。如果一个进程不需要与其他进程通信,那么它可以将数据保留在内存中。

更有意义的是每个进程的临时目录,其文件也可供其他进程访问,但在进程退出时会被删除。然而,这是一个相当昂贵的操作(就实现复杂性而言):终止进程必须执行递归文件和目录删除,这可能会执行非常复杂的操作,例如导致安装点消失。对于可以在几行 shell 中实现的东西来说,好处相当小。

#!/bin/sh
tmpdir=$(mktemp -d) || exit
the_real_program; ret=$?
rm -rf -- "$tmpdir"
exit $ret

从技术上讲,你想要的可以通过保险丝:让进程通过FUSE驱动实现一个临时文件系统。但话又说回来,这太复杂了,但收效甚微。

答案2

简而言之:不。 /proc 项是基于内存的,如果您使用 /tmp oir /usr/tmp (或类似)之类的东西与 mktmp 或类似命令,效果会更好。

如前所述,内核映射空间的成本非常高,并且您的机器内存很快就会耗尽。

任何使用临时文件的应用程序也应该进行一些内务处理,自行清除。

相关内容