nixp.ru v3.0

27 мая 2017,
суббота,
09:22:40 MSK

DevOps с компанией «Флант»
anonymous написал 25 сентября 2005 года в 19:59 (476 просмотров) Ведет себя неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.

Доброго всем времени суток!

Введение: в linux модуль ядра, отвечающий за, например, ttyS0, посылает группе процессов, связанных с этим ttyS0 сигнал SIGHUP в случае разъединения данного терминала. Так, например, если pppd держит открытым ttyS0, то он получает SIGHUP в случае если модем положил трубку по причине обрыва связи, и обрабатывает его, завершая работу… В моем случае используется виртуальная пара /dev/ptms и /dev/pts/x (где x — номер вирт. slave терминала). /dev/ptms «слушает» демон slmodem. /dev/pts/x — демон pppd. Вопрос: как определить PGID/PID pppd в slmodem, чтобы послать ему/группе SIGHUP при обрыве соединения. Или есть другие варианты решения проблемы? Как можно реализовать поведение /dev/pts/x , аналогичное поведению /dev/ttySx ?

P.S. Использвование lcp-echo-failure опции в pppd — не предлагать. :)

Genie

fuser -auv

lsof

в общем, что-то типа.

anonymous
Genie
fuser -auv

lsof

в общем, что-то типа.

А ядро или glibc подобных функций не имеют?

Genie

ну, вроде бы как имеют.

программы же эти как-то данную информацию добывают?

ну вот, и смотри их самих..

собственно, я в самом программировании не очень — дминистрирование как-то большую часть времени отнимает.

anonymous

Долгие поиски, вопросы и расспросы дали следующую информацию (проверенную уже и на практике). Для того, чтобы послать HUP всем процессам, открывшим какой-либо из псевдотерминалов, необходимо просто закрыть дескриптор мастер-терминала /dev/ptmx, полученный при создании пары master-slave псевдотерминалов.

Вот и все. :)