LINUX.ORG.RU

Отложенный или немедленный ^C, ^Z


0

0

Отложенный или немедленный ^C, ^Z

4. В MS DOS, как известно, Control-Break распознается некоторыми функциями ввода. То есть мало того, что пользователь нажал CTRL-Break, при этом само по себе ничего не произойдет, программа еще не прервется и будет продолжать работу – надо, чтобы программа вызвала функцию чтения MS DOS с клавиатуры, поддерживающую обработку Ctr-Break (если был ctrl—break, из этой функции программа уже не вернется) :) Во FreeBSD есть ^C и ^Z (suspend). Вопрос, они сразу действуют или как в MS DOS, т.е. надо, чтобы программа обратилась к терминалу? Какова внутренняя архитектура этих механизмов?

Все вопросы - http://unixvop.narod.ru/


Нажатие сочетания клавиш ^C обрабатывается драйвером терминала, который отправляет процессу сигнал. Прочитайте про сигнальный механизм в BSD/Linux. В краце, программа может игнорировать или как угодно обрабатывать сигнал (кроме KILL и STOP), не обязательно завершать свою работу, но при этом она должна заранее (до прихода сигнала) определить как она будет его обрабатывать.

>Хотя про SMTP было написано в той же Википедии, что ответ всегда 1 строка

Ну, а теперь прочитайте про ESMTP :) И смотрите, чем последняя строчка ответа отличается от остальных.

>Telnet (стандартный, из FreeBSD)

Хорошее определение стандарта телнета :) В telnet может быть что угодно, отправка один символ --- одина отправка, одна строка --- одна отправка или несколько символов за определённый интервал времени --- одна отправка.

А с сокетами можно работать в блокирующемся и не блокирующемся режиме. В первом случае из потокового сокета будет читаться столько данных, сколько уже в него пришло, а если он пуст, выполнение программы будет приостановлено. В общем про сокеты в сети много информации, читайте.

mky ★★★★★
()

>надо, чтобы программа вызвала функцию чтения MS DOS с клавиатуры,

оно же однозадачное, так что логично

dimon555 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.