fbpx
Wikipedia

Not a typewriter

In computing, "Not a typewriter" or ENOTTY[1] is an error code defined in the errno.h found on many Unix systems. This code is now used to indicate that an invalid ioctl (input/output control) number was specified in an ioctl system call.

"Not a Typewriter" error code in Linux.

Details edit

This error originated in early UNIX. In Version 6 UNIX and earlier, I/O control was limited to serial-connected terminal devices, typically a teletype (abbreviated TTY), through the gtty and stty system calls.[2] If an attempt was made to use these calls on a non-terminal device, the error generated was ENOTTY. When the stty/gtty system calls were replaced with the more general ioctl (I/O control) call, the ENOTTY error code was retained.

Early computers and Unix systems used electromechanical typewriters as terminals.[3][4] The abbreviation TTY, which occurs widely in modern UNIX systems, stands for "Teletypewriter." For example, the original meaning of the SIGHUP signal is that it Hangs UP the phone line on the teletypewriter which uses it. The generic term "typewriter" was probably used because "Teletype" was a registered trademark of AT&T subsidiary Teletype Corporation and was too specific. The name "Teletype" was derived from the more general term, "teletypewriter"; using "typewriter" was a different contraction of the same original term.

POSIX sidesteps this issue by describing ENOTTY as meaning "not a terminal".[5]

Because ioctl is now supported on other devices than terminals, some systems display a different message such as "Inappropriate ioctl for device" instead.[6][7]

Occurrence edit

In some cases, this message will occur even when no ioctl has been issued by the program. This is due to the way the isatty() library routine works. The error code errno is only set when a system call fails. One of the first system calls made by the C standard I/O library is in an isatty() call used to determine if the program is being run interactively by a human (in which case isatty() will succeed and the library will write its output a line at a time so the user sees a regular flow of text) or as part of a pipeline (in which case it writes a block at a time for efficiency). If a library routine fails for some reason unrelated to a system call (for example, because a user name wasn't found in the password file) and a naïve programmer blindly calls the normal error reporting routine perror() on every failure, the leftover ENOTTY will result in an utterly inappropriate "Not a typewriter" (or "Not a teletype", or "Inappropriate ioctl for device") being delivered to the user.

For many years the UNIX mail program sendmail[8] contained this bug: when mail was delivered from another system, the mail program was being run non-interactively. If the destination address was local, but referred to a user name not found in the local password file, the message sent back to the originator of the email was the announcement that the person they were attempting to communicate with was not a typewriter.

See also edit

References edit

  1. ^ "What does ENOTTY stand for?". www.abbreviations.com. Retrieved 2020-07-16.
  2. ^ Version 6 UNIX manual, section 2, system calls
  3. ^ Unix Programmer's Manual. November 3, 1971.
  4. ^ RFC 1, Host Software, Steve Crocker (7 April 1969). Page 3, section "Simple use".
  5. ^ "The Open Group Base Specifications Issue 7, 2018 edition/IEEE Std 1003.1-2017: isatty".
  6. ^ "OpenBSD manual: intro, errno — introduction to system calls and error numbers".
  7. ^ "FreeBSD manual: intro -- introduction to system calls and error numbers".
  8. ^ A/UX: mail and "not a typewriter" (2/95) article TA31349 on support.apple.com (February 27, 1995)

External links edit

  •   Media related to Not a typewriter at Wikimedia Commons

typewriter, this, article, about, unix, error, code, robin, williams, book, typewriter, robin, williams, writer, computing, enotty, error, code, defined, errno, found, many, unix, systems, this, code, used, indicate, that, invalid, ioctl, input, output, contro. This article is about the UNIX error code For the Robin Williams book The Mac Is Not a Typewriter see Robin Williams writer In computing Not a typewriter or ENOTTY 1 is an error code defined in the errno h found on many Unix systems This code is now used to indicate that an invalid ioctl input output control number was specified in an ioctl system call Not a Typewriter error code in Linux Contents 1 Details 2 Occurrence 3 See also 4 References 5 External linksDetails editThis error originated in early UNIX In Version 6 UNIX and earlier I O control was limited to serial connected terminal devices typically a teletype abbreviated TTY through the gtty and stty system calls 2 If an attempt was made to use these calls on a non terminal device the error generated was ENOTTY When the stty gtty system calls were replaced with the more general ioctl I O control call the ENOTTY error code was retained Early computers and Unix systems used electromechanical typewriters as terminals 3 4 The abbreviation TTY which occurs widely in modern UNIX systems stands for Teletypewriter For example the original meaning of the SIGHUP signal is that it Hangs UP the phone line on the teletypewriter which uses it The generic term typewriter was probably used because Teletype was a registered trademark of AT amp T subsidiary Teletype Corporation and was too specific The name Teletype was derived from the more general term teletypewriter using typewriter was a different contraction of the same original term POSIX sidesteps this issue by describing ENOTTY as meaning not a terminal 5 Because ioctl is now supported on other devices than terminals some systems display a different message such as Inappropriate ioctl for device instead 6 7 Occurrence editIn some cases this message will occur even when no ioctl has been issued by the program This is due to the way the isatty library routine works The error code errno is only set when a system call fails One of the first system calls made by the C standard I O library is in an isatty call used to determine if the program is being run interactively by a human in which case isatty will succeed and the library will write its output a line at a time so the user sees a regular flow of text or as part of a pipeline in which case it writes a block at a time for efficiency If a library routine fails for some reason unrelated to a system call for example because a user name wasn t found in the password file and a naive programmer blindly calls the normal error reporting routine perror on every failure the leftover ENOTTY will result in an utterly inappropriate Not a typewriter or Not a teletype or Inappropriate ioctl for device being delivered to the user For many years the UNIX mail program sendmail 8 contained this bug when mail was delivered from another system the mail program was being run non interactively If the destination address was local but referred to a user name not found in the local password file the message sent back to the originator of the email was the announcement that the person they were attempting to communicate with was not a typewriter See also editlp0 on fireReferences edit What does ENOTTY stand for www abbreviations com Retrieved 2020 07 16 Version 6 UNIX manual section 2 system calls Unix Programmer s Manual November 3 1971 RFC 1 Host Software Steve Crocker 7 April 1969 Page 3 section Simple use The Open Group Base Specifications Issue 7 2018 edition IEEE Std 1003 1 2017 isatty OpenBSD manual intro errno introduction to system calls and error numbers FreeBSD manual intro introduction to system calls and error numbers A UX mail and not a typewriter 2 95 article TA31349 on support apple com February 27 1995 External links edit nbsp Media related to Not a typewriter at Wikimedia Commons Retrieved from https en wikipedia org w index php title Not a typewriter amp oldid 1195939931, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.