Not a typewriter
このエラーコードは、初期のUNIXに由来する。バージョン6以前のUNIXにおける入出力制御は、gttyおよびsttyシステムコールを通じて、テレタイプ(TTYと略される)に代表されるシリアル接続された端末デバイスに限定されていた。端末でないデバイスでこれらのシステムコールを使おうしたときに、ENOTTYエラーが発生した。stty/ttyシステムコールが、より一般的なioctl(入出力制御)システムコールに置き換えられても、ENOTTYエラーコードは維持された。
初期のコンピュータでは、電気機械式のタイプライターが端末として使われていた。現代のUNIXシステムで広く使われている"TTY"という略語は、"teletypewriter"(テレタイプライター)の略である。例えば、SIGHUP(英語版)シグナルの本来の意味は、それを使用するテレタイプライターの電話線を切る(hung up)ことである。「テレタイプ」はAT&Tの子会社であるテレタイプ社の登録商標であるため、それを回避するために「タイプライター」という一般名詞に置き換えたものと見られる。
POSIXでは、ENOTTYを"not a terminal"(端末ではない)という意味とすることで、この問題を回避している。
ioctlは現在、端末以外の機器にも対応しているため、システムによっては"inappropriate ioctl for device"(デバイスに対する不適切なioctl)のような別のメッセージを表示することもある。