Jump to content

Не пишущая машинка

Код ошибки «Не пишущая машинка» в Linux.

В информатике « Не печатная машинка » или ЭНОТТИ [ 1 ] — это код ошибки, определенный в файле errno.h, который встречается во многих системах Unix . Этот код теперь используется для указания того, что ioctl в системном вызове ioctl был указан недопустимый номер (управление вводом/выводом).

Подробности

[ редактировать ]

Эта ошибка возникла в ранних версиях UNIX . В версии 6 UNIX и более ранних версиях управление вводом-выводом было ограничено терминальными устройствами с последовательным подключением, обычно телетайпом (сокращенно TTY), посредством системных вызовов gtty и stty. [ 2 ] Если была предпринята попытка использовать эти вызовы на нетерминальном устройстве, возникала ошибка ENOTTY . Когда системные вызовы stty/gtty были заменены более общим вызовом ioctl (управление вводом-выводом), код ошибки ENOTTY был сохранен.

Ранние компьютеры и системы Unix использовали электромеханические пишущие машинки в качестве терминалов . [ 3 ] [ 4 ] Аббревиатура TTY, широко распространенная в современных системах UNIX, означает « телетайп ». Например, первоначальное значение сигнала заключается SIGHUP в том, что он подвешивает телефонную линию на телетайпе, который его использует. Общий термин «пишущая машинка», вероятно, использовался потому, что «Телетайп» был зарегистрированной торговой маркой AT&T дочерней компании Teletype Corporation, , и был слишком конкретным. Название «Телетайп» произошло от более общего термина «телетайпная машинка»; использование слова «пишущая машинка» было другим сокращением того же исходного термина.

POSIX обходит эту проблему, описывая ENOTTY как «не терминал». [ 5 ]

Поскольку ioctl теперь поддерживается не только на терминалах, но и на других устройствах, некоторые системы вместо этого отображают другое сообщение, например «Неподходящий ioctl для устройства». [ 6 ] [ 7 ]

возникновение

[ редактировать ]

В некоторых случаях это сообщение появится, даже если ioctl программа не выдала . Это связано с тем, как работает библиотечная процедура isatty(). Код ошибки errno устанавливается только в случае сбоя системного вызова. Одним из первых системных вызовов, выполняемых стандартной библиотекой ввода-вывода C, является вызов isatty(), используемый для определения того, запускается ли программа человеком в интерактивном режиме (в этом случае isatty() завершится успешно, и библиотека напишет свой выводить построчно, чтобы пользователь видел регулярный поток текста) или как часть конвейера (в этом случае для повышения эффективности записывается поблочно). Если библиотечная процедура завершается сбоем по какой-то причине, не связанной с системным вызовом (например, потому что имя пользователя не было найдено в файле паролей), и наивный программист вслепую вызывает обычную процедуру сообщения об ошибках perror() при каждом сбое, остатки ENOTTY приведет к доставке пользователю совершенно неподходящего сообщения «Не пишущая машинка» (или «Не телетайп», или «Неподходящий ioctl для устройства»).

UNIX На протяжении многих лет почтовая программа sendmail [ 8 ] содержал такую ​​ошибку: когда почта доставлялась из другой системы, почтовая программа запускалась неинтерактивно. Если адрес назначения был локальным, но ссылался на имя пользователя, не найденное в локальном файле паролей, сообщение, отправленное обратно отправителю электронного письма, представляло собой объявление о том, что человек, с которым они пытались связаться, не был пишущей машинкой.

См. также

[ редактировать ]
  1. ^ «Что означает ЭНОТТИ?» . www.abbreviations.com . Проверено 16 июля 2020 г.
  2. ^ Руководство по UNIX версии 6, раздел 2, системные вызовы
  3. ^ Руководство Unix-программиста . 3 ноября 1971 года.
  4. ^ RFC   1 , Host Software , Стив Крокер (7 апреля 1969 г.). Страница 3, раздел «Простое использование».
  5. ^ «Базовые спецификации открытой группы, выпуск 7, издание 2018 г./IEEE Std 1003.1-2017: isatty» .
  6. ^ «Руководство OpenBSD: intro, errno — введение в системные вызовы и номера ошибок» .
  7. ^ «Руководство по FreeBSD: введение — введение в системные вызовы и номера ошибок» .
  8. ^ A/UX: почта и «не пишущая машинка» (2/95), статья TA31349 на support.apple.com (27 февраля 1995 г.)
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 407351dc64840ebf2c9726f339612a7f__1705343700
URL1:https://arc.ask3.ru/arc/aa/40/7f/407351dc64840ebf2c9726f339612a7f.html
Заголовок, (Title) документа по адресу, URL1:
Not a typewriter - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)