Новый день, новый пост. Привет. Пожалуй, начнём.

Если хочешь понять, как работает эмулятор терминала (ведущий, ведомый и тому подобное), вот тебе инструкция.

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

Всё делаю на десктопной Ubuntu 22 с терминалом Konsole.

Запускаем в первом терминале:

readlink /proc/self/fd/0

Получаем нечто подобное: /dev/pts/0.

Открываем второй терминал и запускаем от рута, получаем нужные PID:

pgrep -xo konsole
pgrep -xo bash

24385
24401

Вместо Konsole и Bash можешь указать свой терминал и оболочку.

Подставляем PID в команду и опять запускаем от рута:

strace -Yytttf -p 24385 -p 24401 -o bashdays.log

Возвращаемся в первый терминал, где запускали readlink, и что-нибудь начинаем вводить: команды там, текст.

После того как наигрался, возвращайся во второй терминал со strace, стопай и открывай на изучение лог bashdays.log.

В нём ты найдёшь много интересного, если всё сделал правильно — придёт озарение.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Штука низкоуровневая, но даёт базовое понимание, как устроен эмулятор терминала.

Сегодня в 20:13 МСК залетит связанный с этой темой пост. Будут кишочки, strace и дебаг аномалии. Забегай.

Хорошего тебе дня, изучай!