Когда я создаю временный файл/каталог, когда он будет удален?

Julia содержит количество методов для создания временных файлов и каталогов. .

Я довольно интенсивно использую их (и /dev/shm) для взаимодействия с библиотеками, которые действительно хотят работать с реальными файлами (JLD/HDF5 и OpenStack Swift).

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

Линукс их удалит?


person Lyndon White    schedule 06.09.2016    source источник


Ответы (2)


Если приложение не очистило себя, ОС в конечном итоге удалит файлы. Это зависит от системных настроек, когда удаляются временные файлы. Например, это может произойти при загрузке или ночью (через задание cron) или как-то еще.

См., например, этот ответ: Как очищается каталог /tmp?

person Sergio Tulentsev    schedule 06.09.2016

То, что вы, вероятно, ищете, учитывая ваше удивление тем, что они не были удалены из-за выхода за рамки, поскольку версии do block mktemp. В самой документации, на которую вы ссылаетесь.

mktemp(f::Function[, parent=tempdir()])

Примените функцию f к результату mktemp(parent) и удалите временный файл после завершения.

mktempdir(f::Function[, parent=tempdir()])

Примените функцию f к результату mktempdir(parent) и удалите временный каталог после завершения.

Который вы можете использовать как:

mktempdir("/dev/shm") do tdir
    fname = joinpath(tdir, name)
    #Do some things with your new temp filename `fname` in your tempdir `tdir`
end
#the directory referenced by `tdir`, and `fname`, have now been deleted.
person Lyndon White    schedule 07.09.2016