wizzard: (Default)
wizzard ([personal profile] wizzard) wrote2009-09-12 02:26 pm
Entry tags:

И еще про линукс…

Вот там можно удалить запущенный executable. В этом, в общем-то, ничего страшного нет. Но.

1. Как при этом работает memory mapping?

2. Если там нету memory mapping, то как там работают SFX архивы и просто тяжелые бинарники?

[identity profile] slobin.livejournal.com 2009-09-20 02:12 pm (UTC)(link)
Что касается SFX архивов, то их в юниксах традиционно нет.

Они там традиционно есть. На шелле. ;-) Ну да, так ходит гораздо меньше пакетов, чем rpm, deb или tar.gz, но периодически встречаются.

Ответ на исходный вопрос: файл жив, пока он кому-то нужен (суммарное количество записей о нём в разных каталогах плюс суммарное количество открытых с ним дескрипторов больше нуля). Может, ещё что-то в эту сумму входит, не соображу. Более того: если из всех каталогов вы его потёрли, а открытый дескриптор остался, то файл всё ещё можно восстановить (то есть дать ему имя в каком-нибудь каталоге).

... Бесплатный сюр бывает только в мюшеловке ...

[identity profile] lionet.livejournal.com 2009-09-20 02:16 pm (UTC)(link)
Они там традиционно есть. На шелле.

Ты про shar? ;) Юморист! Но да, таки-self-extracting ;)

[identity profile] slobin.livejournal.com 2009-09-20 08:57 pm (UTC)(link)
Ну, не только именно shar ;-) Например, нвидия раздаёт свои драйвера в формате, близком к шару, но сделанному какой-то другой паковалкой. Смысл именно такой, как у селф-экстракторов в винде -- отдать пользователю инсталлятор, который сам всё сделает.

... Вот жизнь - и миросозерцнуть некогда ...

[identity profile] lionet.livejournal.com 2009-09-20 02:17 pm (UTC)(link)
Более того: если из всех каталогов вы его потёрли, а открытый дескриптор остался, то файл всё ещё можно восстановить (то есть дать ему имя в каком-нибудь каталоге).

Тут я не соглашусь: стандартных средств это сделать нет. Можно, разве что, вытащить из открытого, но "стёртого" файла данные и записать в новый файл.

[identity profile] slobin.livejournal.com 2009-09-20 08:59 pm (UTC)(link)
Да, вы правы. Восстановить тот же самый файл вроде как нельзя без ухищрений, это я неправду сказал. А копирование открытого, если его по ошибке убили, делается стандартно:

cp /proc/процесс/fd/дескриптор новый.файл

... Я не волшебник, я уже научился ...