В чем разница между socat и agetty?

Использование символов сделает работу. Вы можете быстро преобразовать строку в массив символов, которыми можно манипулировать с помощью методов CharacterView.

Пример:

let myString = "Hello World!"
let myChars  = myString.characters

(полный CharacterView документ)

(протестировано в Swift 3)

3
задан 07.05.2020, 00:58

1 ответ

Socat - это утилита на основе командной строки, которая устанавливает два двунаправленных потока байтов и передает данные между ними. Поскольку потоки могут быть построены из большого набора различных типов приемников и источников данных, а также потому, что к потокам может быть применено множество опций адресации, socat может использоваться для множества различных целей. nixCraft

socat может выполнять работу с последовательными линиями и выполнять довольно сложные функции, такие как прослушивание нескольких клиентов через порт или повторное использование соединений. Жизненный цикл экземпляра socat обычно состоит из четырех фаз.

  • На этапе инициализации параметры командной строки анализируются, и ведение журнала инициализируется.
  • Во время открытой фазы socat открывает первый адрес, а затем второй адрес. Эти шаги обычно блокируют; таким образом, особенно для сложных типов адресов, таких как носки, запросы на подключение или диалоги аутентификации должны быть завершены до запуска следующего шага.
  • На этапе передачи socat просматривает дескрипторы файлов чтения и записи обоих потоков с помощью select (), а когда данные доступны на одной стороне и могут быть записаны на другой стороне, socat читает их, выполняет преобразования символов новой строки, если требуется, и записывает данные в дескриптор файла записи другого потока, затем продолжает ожидать больше данных в обоих направлениях.
  • Когда один из потоков эффективно достигает EOF, начинается фаза закрытия. Socat передает условие EOF в другой поток, он пытается отключить только свой поток записи, что дает ему возможность корректно завершиться. В течение определенного времени socat продолжает передавать данные в другом направлении, но затем закрывает все оставшиеся каналы и завершает работу.

agetty открывает порт tty, запрашивает имя для входа и вызывает команду /bin/login. Обычно он вызывается в init(8). У agetty есть несколько нестандартных функций, которые полезны для аппаратных и телефонных линий: ManPage

  • Адаптирует настройки tty к паритету биты и стереть, убить, символы конца строки и заглавные буквы, когда он читает имя пользователя. Программа может обрабатывать 7-разрядные символы с четностью, нечетностью, отсутствием или четностью, а 8-разрядные символы без проверки четности. Распознаются следующие специальные символы: @ и Control-U (kill); #, DEL и обратно (стереть); возврат каретки и перевод строки (конец строки).
  • Опционально выводит скорость передачи из сообщений CONNECT, генерируемых Hayes (tm) -совместимыми модемами.
  • Опционально не зависает, когда ему дается уже открытая линия (полезно для приложений обратного вызова).
  • Опционально не отображает содержимое файла / etc / issue.
  • При желании вместо файла /etc/issue.
  • отображается альтернативный файл проблемы.
  • Опционально не запрашивает имя для входа.
  • Опционально вызывает нестандартную программу входа вместо /bin/login.
  • Опционально включает аппаратное управление потоком.
  • При необходимости вынуждает линию быть локальной, без необходимости обнаружения несущей.
  • Поддерживает обратный вызов, если это необходимо. Фактическая процедура, которую использует getty, выглядит следующим образом: Изначально getty анализирует свою командную строку. Если ошибок не найдено, а тип tty из командной строки имеет значение «unknown» (значение по умолчанию) или не задан, getty проверяет тип tty в / etc / ttytype, если программа была скомпилирована с определенным TTYTYPE. Если тип tty найден либо в командной строке, либо в файле / etc / ttytype, то он помещается в переменную среды TERM. Затем getty сканирует файл по умолчанию, обычно / etc / default / getty, чтобы определить определенные значения времени выполнения (/etc/conf.getty, если скомпилирован с параметром FSSTND). Значения в файле значений по умолчанию (чье скомпилированное имя может быть изменено с помощью необязательного аргумента -d defaults_file) имеют приоритет перед значениями в командной строке. Затем Getty открывает порт для чтения и записи и отключает буферизацию stdio. Если была указана инициализация, она выполняется.

Дополнительные источники: Сокат , Agetty MP

0
ответ дан 07.05.2020, 00:59
  • 1
    Сообщите мне, достаточно ли это объяснение. Спасибо – Dave Doknjas 07.05.2020, 00:59
  • 2
    У меня есть важная задача закончиться на работе, но я буду. – twofer 07.05.2020, 00:59
  • 3
    Я боюсь, что не заставляю консоль входить в систему, когда я использую socat для передачи между хостом и гостевой виртуальной машиной, который я don' t думают, адрес носков. Можно ли объяснить, почему это происходит, или я делаю что-то не так? – TnTinMn 07.05.2020, 01:00
  • 4
    Я добавил больше детали. Я надеюсь that' s достаточно достаточный. – jmcilhinney 07.05.2020, 01:00
  • 5
    Я ценил бы более подробный explaination, Mitch. – henry 07.05.2020, 01:00

Теги

Похожие вопросы