
En informática , " Not a typewriter " o ENOTTY [1] es un código de error definido en el archivo errno.h que se encuentra en muchos sistemas Unix . Este código se utiliza ahora para indicar que se especificó un número de ioctl (control de entrada/salida) no válido en una llamada al sistema ioctl .
Detalles
Este error se originó en los primeros UNIX . En la versión 6 de UNIX y anteriores, el control de E/S se limitaba a los dispositivos terminales conectados en serie , normalmente un teletipo (abreviado TTY), a través de las llamadas al sistema gtty y stty. [2] Si se intentaba utilizar estas llamadas en un dispositivo no terminal, el error generado era ENOTTY . Cuando las llamadas al sistema stty/gtty se reemplazaron por la llamada ioctl (control de E/S) más general, se mantuvo el código de error ENOTTY .
Los primeros ordenadores y sistemas Unix utilizaban máquinas de escribir electromecánicas como terminales . [3] [4] La abreviatura TTY, que aparece ampliamente en los sistemas UNIX modernos, significa " Teletypewriter ". Por ejemplo, el significado original de la señal SIGHUP es que cuelga la línea telefónica en el teletipo que la utiliza. El término genérico "typewriter" probablemente se utilizó porque "Teletype" era una marca registrada de la subsidiaria de AT&T , Teletype Corporation , y era demasiado específico. El nombre "Teletype" se derivó del término más general, "teletypewriter"; usar "typewriter" era una contracción diferente del mismo término original.
POSIX evita este problema al describir ENOTTY como "no es una terminal". [5]
Debido a que ahora ioctl es compatible con otros dispositivos además de terminales, algunos sistemas muestran un mensaje diferente como " Ioctl inadecuado para el dispositivo". [6] [7]
Aparición
En algunos casos, este mensaje aparecerá incluso cuando el programa no haya emitido ninguna instrucción ioctl . Esto se debe a la forma en que funciona la rutina de la biblioteca isatty(). El código de error errno solo se establece cuando falla una llamada al sistema. Una de las primeras llamadas al sistema que realiza la biblioteca de E/S estándar de C es una llamada isatty() que se utiliza para determinar si el programa se está ejecutando de forma interactiva por un humano (en cuyo caso isatty() tendrá éxito y la biblioteca escribirá su salida una línea a la vez para que el usuario vea un flujo de texto regular) o como parte de una secuencia de comandos (en cuyo caso escribe un bloque a la vez para mayor eficiencia). Si una rutina de biblioteca falla por alguna razón no relacionada con una llamada del sistema (por ejemplo, porque no se encontró un nombre de usuario en el archivo de contraseñas) y un programador ingenuo llama ciegamente a la rutina normal de informe de errores perror() en cada falla, el ENOTTY restante dará como resultado un mensaje totalmente inapropiado "No es una máquina de escribir" (o "No es un teletipo", o "Ioctl inadecuado para el dispositivo") que se entrega al usuario.
Durante muchos años, el programa de correo de UNIX sendmail [8] contenía este error: cuando se enviaba correo desde otro sistema, el programa de correo se ejecutaba de forma no interactiva. Si la dirección de destino era local, pero hacía referencia a un nombre de usuario que no se encontraba en el archivo de contraseñas local, el mensaje enviado de vuelta al remitente del correo electrónico era el anuncio de que la persona con la que intentaban comunicarse no era una máquina de escribir.
Véase también
Referencias
- ^ "¿Qué significa ENOTTY?". www.abbreviations.com . Consultado el 16 de julio de 2020 .
- ^ Versión 6 Manual de UNIX, sección 2, llamadas del sistema
- ^ Manual del programador Unix. 3 de noviembre de 1971.
- ^ RFC 1, Host Software , Steve Crocker (7 de abril de 1969). Página 3, sección "Uso simple".
- ^ "Especificaciones base de The Open Group, edición 7, 2018/IEEE Std 1003.1-2017: isatty".
- ^ "Manual de OpenBSD: intro, errno — introducción a las llamadas del sistema y números de error".
- ^ "Manual de FreeBSD: introducción - introducción a las llamadas del sistema y números de error".
- ^ A/UX: correo y "no una máquina de escribir" (2/95) artículo TA31349 en support.apple.com (27 de febrero de 1995)