您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在系统调用期间捕获/阻止SIGINT

在系统调用期间捕获/阻止SIGINT

socket.recv()recv在C层中调用与POSIX兼容的基础函数,而EINTR该过程又会在进程中SIGINT等待时接收到的消息,而返回错误代码recv()。可以在C端使用此错误代码(如果您使用C进行编程)来检测recv()返回的错误代码,不是因为套接字上有更多可用数据,而是因为进程收到了SIGINT。无论如何,此错误代码被Python转换为异常,并且由于从未捕获到它,因此它会以看到的回溯终止应用程序。解决方案是简单地捕获socket.error,检查错误代码,如果它等于errno.EINTR,则静忽略异常。像这样:

import errno

try:
    # do something
    result = conn.recv(bufsize)
except socket.error as (code, msg):
    if code != errno.EINTR:
        raise
其他 2022/1/1 18:51:09 有501人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶