On 2006.03.01 at 12:19:50 +0300, Mikhail Ramendik wrote: > Ключик -f в данном, случае, к сожалению, не срабатывает - я проверял. > > Но я тут подумал, что падение CD/DVD-ROM в device not ready _обязано_ > корректно отрабатываться в любом случае, а если не отрабатывается - это баг > (не знаю, в iso9660 fs или нет...)
Боюсь что в VFS layer. > > Затем что если ты вытаскиваешь диск, то shell у которого CWD на этом диске > > тебе уже не нужен. shell-ы это вообще расходный материал - для каждого > > скрипта новая копия запускается. > > А если в этом шелле сидел совсем-другой-юзер? То тогда вообще всё плохо. В многопользовательских системах (в смысле где реально работают несколько живых пользователей )не должно допускаться произвольное выдергивание диска из файловой системы. Либо этот диск должен быть в эксклюзивном пользовании того пользователя, который имеет физический доступ к дисководу. Т.е. как раз в ситуации, когда на машине бывает несколько живых пользователей, необходимость явным образом размонтировать диск является разумной предусторожностью от того, чтобы пользователь, имеющий доступ к дисководу, не помешал нечаянно работать другим пользователям. Кстати, в этом случае вариант с сигналами срабатывает. Только делать его нужно чуточку посложнее: 1. Сигналы посылать от имени пользователя-владельца консоли. 2. Диск размонтировать и отдавать только в случае если все процессы получили сигнал. Если сигнал послать не дали (Permission denied) - выяснить кому принадлежит процесс, захвативший диск и сообщить об этом пользователю. > > А если у тебя есть файлменеджер, который держит директорию на съемном > > носителе, и не отрабатывает корректно сигнал, то такой файлменеджер > > убивать надо не сигналом а aptitude remove. > > Какой сигнал? Разве есть сигнал, означающий "из-под тебя убрали файловую > систему"? Какой угодно. Хоть SIGHUP. > > Сценарий при этом варианте: > > login: xxx > password: xxx > [insert disk] > $ cd /mnt/cdrom > [disk automounted] > $ cp * ~/incoming > [copying...] > $ > [eject disk, logon shell crashed] > login: > [user: WTF?!?!] Пользователь, работающий с текстовой консоли, это не пользователь, а системный администратор. Он должен своей головой думать. А в рамках типичной GUI-системы процессом-лидером пользовательской сессии является window manager, у которого cwd в ${HOME}. > /mnt/cdrom$ emacs > > [long work..] > [eject CD] > [emacs crashes as parent is killed!] > > У shell'а ещё и дети есть... Ну, если shell прибили не SIGHUP-ом, то детям это не мешает. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]