LINUX.ORG.RU

Мониторинг pts

 , , , ,


0

2

Суть проблемы. Открываем Terminal Emulator в Android 4.3. Набираем команду tty, получаем что-ть типа /dev/pts/0. Потом набираем команду su. Теперь набираем tty, получаем уже /dev/pts/2. Такая хрень возникает из-за того, что генитальный гугль в Android 4.3 залочил suid, из-за чего для получения рута приходится пробрасываться на какой-ть там daemonsu, в следствие чего наш дочерний процесс привязан к другому tty. К чему это всё приводит. Когда Terminal Emulator вызывает экранную клавиатуру, то изменения размера терминала пробрасываются только в /dev/pts/0 (можно проверить через stty -F /dev/pts/0 -a), а до /dev/pts/2 ничего не доходит. Грусть-печаль, получается всё глючит. Возникла идея написать какой-ть простенький демон, который слушал бы изменения в /dev/pts/0 и пробрасывал их на /dev/pts/2. Вопрос только как это сделать без тупого раз в секунду чтения параметров оного? Inotify, к сожалению, не мониторит pts. Есть какой-ть другой механизм?


Ну, параметры tty получаются как ioctl(fd, TIOCGWINSZ, &win) в переменную struct winsize win, можешь копнуть в сторону этого ioctl в исходниках ядра, может, найдёшь способ поставить на него уведомление.

Adonai ★★★
()
Ответ на: комментарий от devsdc

Насколько я знаю, есть сигнал SIGWINCH, который посылается при изменении размеров tty.

Да, но он не ловится в родительском процессе (у которого /dev/pts/0), если я сделал su.

xusrol
() автор топика

Хм, а можно как-то сменить tty работающего процесса?

xusrol
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.