связь между печатью пространства пользователя, консолью и tty - PullRequest
1 голос
/ 14 февраля 2012

Я уже разместил вопрос, чтобы сделать печать из пространства пользователя на своего рода нетрадиционном последовательном порту. нестандартная последовательная консоль linux

Однако я понял, что немного запутался в архитектуре печати в пространстве пользователя.

  1. Куда пользовательское пространство printf отправляет свои данные? Я вижу, что stdout / stdin символически связаны с одним из tty / pty? Но кто устанавливает эту ссылку?
  2. Как tty подключается к доступным консолям? Или скажем так: как tty core взаимодействует с консолью?

Ответы [ 2 ]

3 голосов
/ 15 февраля 2012

printf() записывает в stdout, то есть FILE *, который оборачивает дескриптор файла 1. Файловые дескрипторы либо наследуются от родителя, либо открываются явно. Если вы будете следовать иерархии процессов вверх в типичной системе, вы, наконец, получите процесс login, который обычно порождается процессом *getty. Процесс getty подключается к терминалу с соответствующими настройками (скорость линии, четность, ... на последовательных линиях) и обычно вызывает login на первом ключе / клавише ENTER. gettys обычно запускаются непосредственно из /etc/inittab в традиционных системах инициализации.

1 голос
/ 15 февраля 2012

printf использует внутри себя системный вызов write () и выполняет запись в дескриптор файла 1, связанный с файлом устройства tty.

Ссылка, о которой вы говорите, устанавливается ядром.

...