mgetty и bforce

From
Igor Mitichev (2:6001/9.9)
To
Elohin Igor'
Date
2005-08-23T19:07:28Z
Area
RU.UNIX.FTN
Привет Elohin!

23 Авг 05 года (а было тогда 18:15)
Elohin Igor' в своем письме к Igor Mitichev писал:

 >> Так вот как раз imho у mgetty и bforce lock'и разнесены по разным
 >> каталогам. Где это прописывается тут говорили. Проверь этот вопрос.
 EI> Если mgetty или точнее vgetty стоит в качестве автоответчика - о каком
 EI> lock'е может идти речь ? Он просто слушает порт.

    Рассказываю. Mgetty запускается из файла /etc/inittab примерно следующей командой: d2:2345:respawn:/sbin/mgetty -D  /dev/ttyS1 (в твоем случае, видимо, -D не будет).
    При этом, он действительно с одной стороны слушает модемный порт. Разберем эту сторону. Когда из модема поступает "Ring", mgetty отвечает в порт "ATA", после чего модем поднимает трубку и устанавливает соединение. Какое это будет соединение -- пока не понятно. Но в конце-концов со стороны модема что-то приходит. Вот это что-то и анализируется mgetty. И на основании этого анализа mgetty запускает дочернний процесс (будь то pppd, фидошный мейлер или любой другой прикладной софт), а сама прекращает работу, выгружается из памяти. Запушенный дочерний процесс делает свое дело, а по его завершении так же прекращает работу. Модемный порт остается "безхозным". Но! Но в упоминаемом выше файле /etc/inittab есть одна замечательная способность: процесс, запущщеный в режиме respawn если и прекратит свою работу, то будет по-новой перезапущен системой. Таким образом, как только порт освобождается, система запускает новую копию mgetty, которая и продолжает отслеживать состояние порта. Это с одной стороны. Но есть и другая сторона: mgetty с этой другой стороны смотрит в каталог /var/lock. И если обнаруживает там флаг занятости порта, так же завершает свою работу. То есть при, например, исходящих звонках, фидошный мейлер создает флаг занятости порта, mgetty, отследив этот момент, выгружается, мейлер устанавливает исходящее соединение, после чего удаляет за собой флаг занятости модема. Mgetty, обнаружив что такого флага больше нет, запускается новой копией (мы все еще помним про режим respawn в inittab?).
    В твоем же случае, mgetty не видит флага занятости модема, не выгружается, а как ни в чем не бывало продолжает его слушать. При этом, если мейлер пытается сделать исходящее соединение, mgetty, видимо, воспринимает сигналы в порту как руководство к действию и начинает управлять модемом. В результате имеем несогласованность работы двух софтин, сидящих на одном девайсе. Ну и тот самый геморой, который ты описал несколькими письмами ранее.
    Во всяком случае, мне с моим рабоче-крестьянским образованием такая версия развития событий кажется вполне правдоподобной, чтобы проверить идентичность путей, по которым разные программы создают флаги занятости модемного порта.

С уважением                                             23 Авг 05 года
Igor Mitichev                                           garick33 на hotbox.ru

       Развитие индивида обусловлено развитием всех других индивидов,
         с которыми он находится в прямом или косвенном общении.(с)
--- Я писать стихи не могу, по натуре я не Пушкин. Я по натуре Белинский.(с)
 * Origin: Задавайте мне любые вопросы, я вам дам любые ответы. (2:6001/9.9)
SEEN-BY: 46/50 400/814 450/1024 5000/5000 5010/53 5011/13 5012/46 5015/10 28
SEEN-BY: 5019/31 5020/545 715 2871 4441 5021/29 5025/3 5027/16 5030/115
SEEN-BY: 5035/38 5036/34 5053/16 5054/1 8 9 18 37 45 63 67 81 5063/3 5069/7
SEEN-BY: 5077/70 5080/1003 5085/13 5092/1 5095/20 5096/18 6000/12 254 6001/8 9
SEEN-BY: 6001/10
PATH: 6001/9 10 5020/545 5054/1 37