Книга: UNIX: разработка сетевых приложений
Упражнения
Упражнения
1. Обсуждая листинг 16.6, мы отметили, что родительский процесс должен вызвать функцию shutdown
, а не функцию close
. Почему?
2. Что произойдет в листинге 16.6, если процесс сервера завершится преждевременно и дочерний процесс получит признак конца файла, но не уведомит об этом родительский процесс?
3. Что произойдет в листинге 16.6, если родительский процесс непредвиденно завершится до завершения дочернего процесса, и дочерний процесс затем считает конец файла на сокете?
4. Что произойдет в листинге 16.7, если мы удалим следующие две строки:
if (n == 0)
goto done; /* функция connect завершилась немедленно */
5. В разделе 16.3 мы сказали, что возможна ситуация, когда данные для сокета придут раньше, чем завершится функция connect
. Когда это может случиться?