Python сокеты, request.recv и сигналы

1

У меня вопрос, потому что я довольно новичок в python, программировании сокетов и сигналах. Я написал сервер сокетов python, который открывает новый процесс обработки запросов для каждого клиента, который подключается к определенному порту. Я поймал сигнал ctrl + c и закрыл соединения с базой данных, если сервер получит такой сигнал.

Поскольку я тестирую свой сервер с помощью команды netcat, мой вопрос: если вы используете CTRL + C для завершения клиентского соединения, которое выполняется в окне bash, может ли сервер поймать этот сигнал SIGINT и действовать на него? или это потому, что клиент, являющийся совершенно другой программой (мой случай - команда netcat), является единственным, который может получать сигнал SIGINT?

Может ли сервер получать команду SIGINT, если клиент будет отключен от клавиатуры?

Заранее спасибо за любую информацию об этом.

Теги:
sockets
signals

1 ответ

2
Лучший ответ

Сигналы существуют в собственном процессе: сигнал, возникающий в процессе клиента, не будет известен серверным процессом и наоборот. Ваши варианты заключаются в том, чтобы один процесс сообщал другому, что он завершается, или просто подождите, пока другая сторона заметит, что соединение было отброшено (что, если вы используете TCP/IP, произойдет из отказавшего сокета работа на данном сокете).

  • 1
    EPIPE есть: вы получите 0 байтов при read() , EPIPE при write() .
  • 0
    спасибо за ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню