LINUX.ORG.RU

Как tty взаимодействует с процессом.

 


1

2

Пытаюсь понять работу терминала.

Интересует то, как tty понимает, какой процесс его читает.

Допустим, словил tty_ldisc SIGINT. Кому tty ему направит? Кто связал tty с этим процессом? В какой момент это произошло?


как tty понимает, какой процесс его читает.

Ну дак у процесса fd=0 связан с tty. А чтобы два процесса одновременно не делали read() с одного терминала есть сигнал SIGTTIN. И SIGTTOU для write().

SIGINT идёт текущей группе сеанса. https://www.intuit.ru/studies/courses/2249/52/lecture/1565?page=3

tty обычно связывается с лидером сеанса, открывшем (open()) его, но не обязательно. Обычно процесс просто наследует от системного демона типа logind и не меняет терминал, и не важно, как системный демон получил этот терминал.

mky ★★★★★
()

Процесс же сам вызывает сисвызов read(), потому ядро автоматически знает кто его вызвал, лол.

anonymous
()

Вильям Ричард С. «Продвинутое программирование в окружении Юникс». Там этому вопросу посвящен минимум целый раздел.

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