Временный каталог для каждого процесса

Существует ли "стандартный" временный каталог каталога, выделенный для отдельного процесса, который исчезает вместе с самим процессом? Что-то похожее на / proc / $ pid / tmp или / proc / self / tmp . Существует множество временных каталогов: системные глобальные временные каталоги, временные пользовательские каталоги, постоянные и те, которые очищаются при перезагрузке, на основе tmpfs и т. Д.

Создается впечатление, что иметь временный каталог для каждого процесса - это здравый смысл. пока я не могу найти ни одного.

0
31.03.2017, 00:08
2 ответа

Вкратце: Нет. Элементы /proc основаны на памяти, и будет лучше, если вы будете использовать что-то вроде /tmp oir /usr/tmp (или подобное) с командой mktmp или подобной.

Как уже говорилось, ядру будет очень дорого занимать место в памяти, и память вашей машины вскоре будет исчерпана.

Любое приложение, использующее временные файлы, также должно выполнять некоторую уборку, очищая их после себя.

0
28.01.2020, 02:33

Нет, не существует стандартного или даже смутно общего места для временного файла каждого процесса. Причина в том, что временные файлы для каждого процесса очень редки. Смысл временного файла почти всегда заключается в обмене данными между процессами. Если процессу не нужно взаимодействовать с другими процессами, то он может хранить данные в своей памяти.

Что имело бы немного больше смысла, так это временный каталог для каждого процесса, файлы которого доступны и другим процессам, но который удаляется при завершении процесса. Однако это довольно дорогая операция (с точки зрения сложности реализации): при завершении процесса придется выполнять рекурсивное удаление файлов и каталогов, что может привести к очень сложным действиям, например, к исчезновению точки монтирования. Выгода будет довольно мала для того, что можно реализовать в паре строк оболочки.

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

Технически, то, что вы хотите, возможно с помощью FUSE: заставить процесс реализовать временную файловую систему через драйвер FUSE. Но, опять же, это большая сложность для небольшой выгоды.

2
28.01.2020, 02:33

Теги

Похожие вопросы