Почему bash не печатает & quot; Сломанную трубу & quot; журнал после процесса мертв?

Мой клиент будет отправлять посылку на сервер. клиентская программа не ловит SIGPIPE.
(клиентский сервер Ubuntu 12.04 LTS)

Я делаю следующий тест:

  1. После того, как 3 рукопожатия закончены. Затем клиент отправит несколько пакетов на сервер.
    Сервер может получать пакеты нормально.

  2. Затем я внезапно убиваю процесс сервера.

  3. Клиентский процесс мертв. Но я не вижу ни одного лог-шоу «Разбитая труба».

Я думаю, что Баш сообщит о мертвой причине.

Почему bash не печатает журнал «Broken pipe» после завершения процесса?

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

«Программа получила сигнал SIGPIPE, Broken pipe.»

-1

Решение

Если клиент не перехватывает SIGPIPE, он не может распечатать сообщение об ошибке! Сообщения вида «Сломанная труба» распечатываются программой, которая получает SIGPIPE в ответ на ошибку записи или в ответ на сигнал. Поскольку ваш клиент не обрабатывает SIGPIPE, он не печатает это сообщение об ошибке, а просто завершает работу. Когда вы запускаете в GDB, GDB сообщает вам, что дочерний процесс завершен из-за SIGPIPE.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector