Signal SIGINT ignored during socket.accept
Chris Angelico
rosuav at gmail.com
Thu Sep 10 14:36:43 EDT 2015
On Fri, Sep 11, 2015 at 4:24 AM, James Harris <james.harris.1 at gmail.com> wrote:
> I have a listening socket, self.lsock, which is used in an accept() call as
> follows
>
> endpoint = self.lsock.accept()
>
> The problem is that if control-C is pressed it is not recognised until
> something connects to that socket. Only when the accept() call returns is
> the signal seen.
>
> The question, then, is how to get the signal to break out of the accept()
> call. This is currently on Windows but I would like it to run on Unix too. I
> see from the web that this type of thing is a common problem with the
> underlying C libraries but I cannot quite relate the posts I have found to
> Python.
What version of Python are you using? Also (in case it matters), what
version of Windows?
Have you tested on any Unix system? I just tried on my Linux, and
Ctrl-C interrupted the accept() straight away, so this is quite
probably a Windows-only issue.
Can you produce an absolute minimal demo program? I'd try something like this:
import socket
s = socket.socket()
s.listen(1)
s.accept()
which is what worked for me (interactively, Python 2.7.9 and 3.6.0a0,
Debian Linux).
ChrisA
More information about the Python-list
mailing list