Как мне заставить работать консоль фреймбуфера?

Ваша оболочка, или независимо от того, что процесс был на переднем плане, уже читал терминал, к которому, был присоединен, который был /dev/ttys011. Затем вы запустили другой процесс, кошка также чтение того же терминала одновременно.

Теперь существует два процесса, конкурирующие за тот же вход от терминала. Каждый раз, когда вы вводите ключ в терминале, он поставляется одному из ожидающих процессов. Другой процесс интересуется чтением также, но когда это становится своей очередью читать нет ничего для чтения. Даже при том, что вы, казалось, наблюдали регулярное чередование, которого идут символы, к которому процессу, это на самом деле непредсказуемо, какие части входа перейдут в который процесс: это могло быть все введено одному, всему входу к другому или чему-либо промежуточному.

, Если вы хотите, чтобы ваш кошка процесс получил весь вход, необходимо принять меры, чтобы ничто иное не читало из того же устройства одновременно. Одним простым способом вы могли сделать, который должен выполнить что-то как сон 999 в терминале. сон ожидает задержки для истечения, но в то время как это ожидает, это не должно пытаться считать что-либо.

команда:

cat /dev/ttys011 | tee /dev/ttys011

не восстанавливает входа, полученного кошка к ее исходному местоположению. Таким образом, мишень не поставляет, она к любому процессу первоначально интересовалась чтением его (таким как ваша оболочка), она просто отправляет его в вывод терминала, который заставляет ее быть отображенной.

Между прочим: вам не нужна программа C и ttyname () функция для получения названия терминала; все, что необходимо сделать, является типом tty , и нажмите Enter при приглашении оболочки.

1
04.12.2017, 20:19
0 ответов

Теги

Похожие вопросы