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:
Compruebe qué configuraciones regionales son compatibles:
less /usr/share/i18n/SUPPORTED
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_CA
en 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
Regenerar los datos locales:
sudo dpkg-reconfigure locales
Чтение с ведущего 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
).