Python сокеты, request.recv и сигналы - PullRequest
1 голос
/ 08 мая 2011

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

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

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

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

1 Ответ

2 голосов
/ 08 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...