Strace. Эмулятор терминала. Не отображается взаимодействие с иксами

Открываю новое окно эмулятора терминала konsole. Запускаю например команду yes. В старом окне запускаю команду и получаю примерно такой вывод.

sudo strace -Yyf -p $(pgrep -xn konsole) -s0

[pid  3376<konsole>] read(17</dev/ptmx>, ""..., 4095) = 4095
[pid  3376<konsole>] poll([...], 5, 8)  = 1 ([...])
[pid  3376<konsole>] ioctl(17</dev/ptmx>, FIONREAD, [4095]) = 0
[pid  3376<konsole>] read(17</dev/ptmx>, ""..., 4095) = 4095
[pid  3376<konsole>] poll([...], 5, 9)  = 1 ([...])
[pid  3376<konsole>] ioctl(17</dev/ptmx>, FIONREAD, [4095]) = 0
[pid  3376<konsole>] read(17</dev/ptmx>, ""..., 4095) = 4095
[pid  3376<konsole>] poll([...], 5, 10) = 1 ([...])
[pid  3376<konsole>] ioctl(17</dev/ptmx>, FIONREAD, [4095]) = 0
[pid  3376<konsole>] read(17</dev/ptmx>, ""..., 4095) = 4095
[pid  3376<konsole>] poll([...], 5, 10) = 1 ([...])
[pid  3376<konsole>] ioctl(17</dev/ptmx>, FIONREAD, [4095]) = 0
[pid  3376<konsole>] read(17</dev/ptmx>, ""..., 4095) = 4095
[pid  3376<konsole>] poll([...], 5, 6)  = 1 ([...])
[pid  3376<konsole>] ioctl(17</dev/ptmx>, FIONREAD, [4095]) = 0
[pid  3376<konsole>] read(17</dev/ptmx>, ""..., 4095) = 4095

То есть вывод состоит из последовательности системных вызовов poll, ioctl, read. Которые опрашивают, читают файлы (Linux всё есть файл). Но в выводе нету ничего что отображало бы взаимодействие с иксами. Прочёл эмулятор данные из устройства, а дальше ничего. Почему?


Ответы (1 шт):

Автор решения: Answer

Системных вызовов много и в ваш кусок вывода просто не попало нужное. Сохраните вывод в файл и смотрите. Также strace умеет фильтровать. Делайте тоже самое только измените команду.

 sudo strace -Yyfe '/^write' -p $(pgrep -xn konsole)

Теперь вы будете видеть вызовы которые начинаются с подстроки write. Интересующий вас вызов writev. Это и есть взаимодействие с иксами посредством сокета. И да pid здесь не причём. Хотелось бы чтоб люди вникали прежде чем пытаться "помогать".

→ Ссылка