Python 在慢速系统调用中处理SIGINT
我对Python非常陌生,所以如果这个问题非常基本,请原谅我 我正在尝试处理键盘中断,同时使用选择模块从套接字接收数据。所以,我有一个select.select()函数调用来等待来自套接字的数据,然后将其输出到控制台 当按下CTRL_C时,似乎有时会出现select.error,有时会出现exceptions.IOError异常。对于这两个异常,相应的错误代码都是4 有一些代码在调用堆栈的更深处处理KeyboardInterrupt异常,所以当我在接受套接字连接的函数中得到SIGINT时,我只想重新引发KeyboardInterrupt异常。我还想捕获与连接相关的异常 检查异常的错误代码是否安全,如果为4,则引发键盘中断?这会影响我捕获连接相关异常的能力吗?有关于错误代码的好资源吗Python 在慢速系统调用中处理SIGINT,python,system-calls,sigint,keyboardinterrupt,Python,System Calls,Sigint,Keyboardinterrupt,我对Python非常陌生,所以如果这个问题非常基本,请原谅我 我正在尝试处理键盘中断,同时使用选择模块从套接字接收数据。所以,我有一个select.select()函数调用来等待来自套接字的数据,然后将其输出到控制台 当按下CTRL_C时,似乎有时会出现select.error,有时会出现exceptions.IOError异常。对于这两个异常,相应的错误代码都是4 有一些代码在调用堆栈的更深处处理KeyboardInterrupt异常,所以当我在接受套接字连接的函数中得到SIGINT时,我只想
谢谢 改用
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无法为内部表分配内存。
谢谢你的回答。现在就试试。谢谢你的回答。现在就试试。