Отсутствует функция чтения мастера PTY

Es probable que se admita la configuración regional ISO -8859 -1, pero simplemente no se ha generado. De la tercera respuesta de esta página Ask Ubuntu:

  1. Compruebe qué configuraciones regionales son compatibles:

    less /usr/share/i18n/SUPPORTED
    
  2. Agregue el idioma que desee /var/lib/locales/supported.d/local. Por lo general, una configuración regional de idioma que no tiene el sufijo (, p. en_CAen lugar deen_CA.UTF-8)es ISO -8859 -1, pero también puede agregar una página de códigos específica si lo desea:

    # Change 'en_CA' to the locale that you want
    echo en_CA >> /var/lib/locales/supported.d/local
    echo en_CA.ISO-8859-1 >> /var/lib/locales/supported.d/local
    
  3. Regenerar los datos locales:

    sudo dpkg-reconfigure locales
    

2
13.07.2019, 02:02
1 ответ

Чтение с ведущего pty будет отправлено на тот же n_tty_read(), то есть к ведущему прикрепляется та же N_TTYлинейная дисциплина, что и к ведомому pty.

Вся трассировка системного вызова read выглядит примерно так:

sys_read() -> ksys_read() -> vfs_read() -> __vfs_read()
  -> file->f_op->read = tty_fops.read -> tty_read()
    -> ld->ops->read = n_tty_ops.read -> n_tty_read()

, а линейная дисциплина прикрепляется к мастеру через

ptmx_open()
  -> tty_init_dev()
     -> alloc_tty_struct()
        -> tty_ldisc_init()
           -> tty_ldisc_get(tty, N_TTY)

Ситуация может быть запутана тем фактом, что

a)Конфигурация termios, используемая мастером pty, настроена на raw/passthrough, поэтому может показаться, что линейная дисциплина вообще отсутствует;-)(см. ptm_driver->init_termios...инициализации вunix98_pty_init()).

b)все termios ioctl(tcsetattr() -> ioctl(TCSETS)и т. д. )будут действовать на конфигурацию ведомого termios даже при вызове на ведущем pty (см.tty_mode_ioctl()вdrivers/tty/tty_ioctl.c).

1
27.01.2020, 22:16

Теги

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