Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
kit_d Гость
|
Добавлено: Пн Ноя 29 2004 14:50 Заголовок сообщения: Ctrl+Z и TCP сервер (сетевое програмирование) |
|
|
Народ - подскажите.
Условие:
В 1 консоли запущен сервер TCP,
во второй - клиент.
В 1-й консоли нажимаем Ctrl+Z
Вопрос:
1) Что происходит с процессом при нажатии
Ctrl+Z в консоли (то что он прекращает работу - это понятно, но какая последовательность действий)
2) После нажатии Ctrl+Z сервер завершается, но в netstat
видно, что соединение - ESTABLISHED. Странно, но клиент продолжает
передавать данные (естественно, пока у него не забьется буфер)?????
Как на клиенте выловить эту ситуацию???? |
|
Вернуться к началу |
|
 |
crash
Зарегистрирован: 02.11.2001 Сообщения: 1836 Откуда: Бердск
|
Добавлено: Пн Ноя 29 2004 15:47 Заголовок сообщения: Re: Ctrl+Z и TCP сервер (сетевое програмирование) |
|
|
kit_d писал(а): | Народ - подскажите.
Условие:
В 1 консоли запущен сервер TCP,
во второй - клиент.
В 1-й консоли нажимаем Ctrl+Z
Вопрос:
1) Что происходит с процессом при нажатии
Ctrl+Z в консоли (то что он прекращает работу - это понятно, но какая последовательность действий)
2) После нажатии Ctrl+Z сервер завершается, но в netstat
видно, что соединение - ESTABLISHED. Странно, но клиент продолжает
передавать данные (естественно, пока у него не забьется буфер)?????
Как на клиенте выловить эту ситуацию???? |
вообщето ctrl+c прерывает. а то как вы делаете вы не прекращаете работу.. выполните команду jobs и все увидите |
|
Вернуться к началу |
|
 |
butcher
Зарегистрирован: 18.04.2003 Сообщения: 467 Откуда: Киров
|
Добавлено: Вт Ноя 30 2004 08:33 Заголовок сообщения: Re: Ctrl+Z и TCP сервер (сетевое програмирование) |
|
|
kit_d писал(а): |
Вопрос:
1) Что происходит с процессом при нажатии
Ctrl+Z в консоли (то что он прекращает работу - это понятно, но какая последовательность действий)
|
Скажем так, он уходит в suspend состояние. По сути ему посылается сигнал SIG_STOP и процесс стоит, ждёт..
Цитата: |
2) После нажатии Ctrl+Z сервер завершается, но в netstat
видно, что соединение - ESTABLISHED. Странно, но клиент продолжает передавать данные (естественно, пока у него не забьется буфер)????? Как на клиенте выловить эту ситуацию???? |
Ничего странного,вы же соединение не закрыли.. Можно попробовать настройками сокетов побаловаться, размерами буферов, keep-alive.. _________________ Нет ничего невозможного... |
|
Вернуться к началу |
|
 |
Dmitry.Karpov
Зарегистрирован: 30.11.2003 Сообщения: 415 Откуда: Moscow
|
Добавлено: Вт Ноя 30 2004 13:46 Заголовок сообщения: |
|
|
RTFM, товарищ! Это совсем не больно!
При нажатии Ctrl+Z последовательность действий такова:
- Нажимаем Ctrl, удерживаем в нажатом положении.
- Нажимаем Z и сразу отпускаем.
- Отпускаем Ctrl.
Нажатие Ctrl+Z посылвет процессу сигнал SigStop ('man kill' и далее по ссылкам в разделе "SEE ALSO" до полного просветления). По умолчанию реакция - впадение в ступор до получения сигнала SigCont. Этот сигнал можно перехватить ('man signal') и проигнорировать.
В TCP-сессию можно слать данные потому, что TCP-машина работает в пространстве ядра, а не процесса. И буфер TCP-сессии находится в пространстве ядра. _________________ Благословен Бог, сотворивший меня сисадмином! |
|
Вернуться к началу |
|
 |
|