Python 在慢速系统调用中处理SIGINT

Python 在慢速系统调用中处理SIGINT,python,system-calls,sigint,keyboardinterrupt,Python,System Calls,Sigint,Keyboardinterrupt,我对Python非常陌生,所以如果这个问题非常基本,请原谅我 我正在尝试处理键盘中断,同时使用选择模块从套接字接收数据。所以,我有一个select.select()函数调用来等待来自套接字的数据,然后将其输出到控制台 当按下CTRL_C时,似乎有时会出现select.error,有时会出现exceptions.IOError异常。对于这两个异常,相应的错误代码都是4 有一些代码在调用堆栈的更深处处理KeyboardInterrupt异常,所以当我在接受套接字连接的函数中得到SIGINT时,我只想

我对Python非常陌生,所以如果这个问题非常基本,请原谅我

我正在尝试处理键盘中断,同时使用选择模块从套接字接收数据。所以,我有一个select.select()函数调用来等待来自套接字的数据,然后将其输出到控制台

当按下CTRL_C时,似乎有时会出现select.error,有时会出现exceptions.IOError异常。对于这两个异常,相应的错误代码都是4

有一些代码在调用堆栈的更深处处理KeyboardInterrupt异常,所以当我在接受套接字连接的函数中得到SIGINT时,我只想重新引发KeyboardInterrupt异常。我还想捕获与连接相关的异常

检查异常的错误代码是否安全,如果为4,则引发键盘中断?这会影响我捕获连接相关异常的能力吗?有关于错误代码的好资源吗


谢谢

改用
errno.EINTR
。它是安全的

>>> import errno
>>> errno.EINTR
4
但是,这不会告诉您是哪个信号中断了系统调用,只会告诉您某些信号中断了系统调用

从人2中选择:

EBADF An invalid file descriptor was given in one of the sets. (Per‐ haps a file descriptor that was already closed, or one on which an error has occurred.) EINTR A signal was caught; see signal(7). EINVAL nfds is negative or the value contained within timeout is invalid. ENOMEM unable to allocate memory for internal tables. EBADF在其中一个集合中提供了无效的文件描述符。(按 HAP是一个已经关闭的文件描述符,或者是一个 发生错误。) 输入信号被捕捉到;见信号(7)。 EINVAL nfds为负值或超时内包含的值为 无效的 ENOMEM无法为内部表分配内存。
改用
errno.EINTR
。它是安全的

>>> import errno
>>> errno.EINTR
4
但是,这不会告诉您是哪个信号中断了系统调用,只会告诉您某些信号中断了系统调用

从人2中选择:

EBADF An invalid file descriptor was given in one of the sets. (Per‐ haps a file descriptor that was already closed, or one on which an error has occurred.) EINTR A signal was caught; see signal(7). EINVAL nfds is negative or the value contained within timeout is invalid. ENOMEM unable to allocate memory for internal tables. EBADF在其中一个集合中提供了无效的文件描述符。(按 HAP是一个已经关闭的文件描述符,或者是一个 发生错误。) 输入信号被捕捉到;见信号(7)。 EINVAL nfds为负值或超时内包含的值为 无效的 ENOMEM无法为内部表分配内存。
谢谢你的回答。现在就试试。谢谢你的回答。现在就试试。