Not a typewriter

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
"Not a Typewriter" код помилки в Linux.

В обчисленні, "Not a typewriter" або ENOTTY є кодом помилки, він визначається в errno.h, заголовному файлі стандартної бібліотеки мови програмування C, який міститься на багатьох системах Unix. Цей код в даний час використовується, щоб вказати, що номер ioctl (керування вводом-виводом, англ. input/output control), що був вказаний в системному виклику ioctl, - недійсний.

Деталі

[ред. | ред. код]

Системний виклик ioctl спочатку підтримувався тільки на термінальних пристроях, також відомих як телетайп; з цієї причини, назва помилки була скорочена як ENOTTY.

"Typewriter" - це термінал, як його називали ранні системи UNIX. Використання цього значення повертається до першого видання Довідника програміста UNIX (англ. The Unix Programmer's Manual), від 3 листопада 1971 року. Наприклад, опис команди "hup" був таким: "hup вішає трубку на машинці, яка використовує його." Скорочення TTY, яке набуло значного поширення навіть в сучасних системах UNIX, виступало за "Teletype". Загальний термін "typewriter", ймовірно, використовувався, тому що "Teletype" був зареєстрований, як товарний знак компанії AT&T — дочірньої компанії Teletype Corporation і мав занадто специфічний характер. Назву "Teletype" було отримано з більш загального терміна - "teletypewriter"; використання "typewriter" було іншим скороченням того ж початкового терміну.

Оскільки ioctl тепер підтримувався на інших пристроях, крім терміналів, деякі системи відображають натомість інше повідомлення, таке як "невідповідний ioctl для пристрою".

Прояви

[ред. | ред. код]

У деяких випадках, це повідомлення буде траплятися навіть при відсутності системного виклику. Це пов'язано з порядком роботи бібліотеки isatty (). Натомість код помилки ERRNO встановлюється тільки при виході з ладу цього системного виклику. Один з перших системних викликів, зроблених за I / O стандартом бібліотеки C знаходиться в виклику isatty (), що використовується для визначення, чи програма була запущена в інтерактивному режимі за участі людини (в цьому випадку виклик isatty () буде успішним, тому користувач бачитиме регулярний потік тексту) чи як частина комунікаційної лінії. Якщо порядок бібліотеки виходить з ладу з якихось причин, не пов'язаних з системним викликом (наприклад, тому що ім'я користувача не знайдено у файлі паролів) і наївний програміст наосліп викликає стандартну процедуру подання звітності perror() на кожній невдачі, то та ENOTTY, що залишилася, призведе до абсолютно недоречного коду помилки "Not a typewriter", який доставляється користувачеві.

Протягом багатьох років поштова програма Sendmail містила цю помилку: коли пошта була доставлена з іншої системи, поштова програма в той час не запускалась інтерактивно. Якщо адреса одержувача був місцевою, але посилалася на ім'я користувача, якого не знайдено в локальному файлі паролів, повідомлення, що відправлялось назад відправнику листа, ставало заявою про те, що людина, з якою він намагався спілкуватися не була "тайпврайтером".

Див. також

[ред. | ред. код]

Посилання

[ред. | ред. код]
  1. A/UX: mail and "not a typewriter" [Архівовано 30 червня 2016 у Wayback Machine.] (2/95)article TA31349 on support.apple.com (February 27, 1995)

Шаблон:Коди помилок