gpt4 book ai didi

python - 在缓慢的系统调用中处理 SIGINT

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:01 27 4
gpt4 key购买 nike

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

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

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

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

检查异常的错误代码并在错误代码为 4 时引发 KeyboardInterrupt 是否安全?这会影响我捕获与连接相关的异常的能力吗?有关于错误代码的好资源吗?

谢谢!

最佳答案

改用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.

关于python - 在缓慢的系统调用中处理 SIGINT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7354624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com