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

В информатике « Не печатная машинка » или ЭНОТТИ [ 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 ] содержал такую ошибку: когда почта доставлялась из другой системы, почтовая программа запускалась неинтерактивно. Если адрес назначения был локальным, но ссылался на имя пользователя, не найденное в локальном файле паролей, сообщение, отправленное обратно отправителю электронного письма, представляло собой объявление о том, что человек, с которым они пытались связаться, не был пишущей машинкой.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Что означает ЭНОТТИ?» . www.abbreviations.com . Проверено 16 июля 2020 г.
- ^ Руководство по UNIX версии 6, раздел 2, системные вызовы
- ^ Руководство Unix-программиста . 3 ноября 1971 года.
- ^ RFC 1 , Host Software , Стив Крокер (7 апреля 1969 г.). Страница 3, раздел «Простое использование».
- ^ «Базовые спецификации открытой группы, выпуск 7, издание 2018 г./IEEE Std 1003.1-2017: isatty» .
- ^ «Руководство OpenBSD: intro, errno — введение в системные вызовы и номера ошибок» .
- ^ «Руководство по FreeBSD: введение — введение в системные вызовы и номера ошибок» .
- ^ A/UX: почта и «не пишущая машинка» (2/95), статья TA31349 на support.apple.com (27 февраля 1995 г.)
Внешние ссылки
[ редактировать ]СМИ, связанные с «Не пишущая машинка», на Викискладе?