到目前为止,我的网络代码工作正常,但我有点担心我隐藏在地毯下的东西:
accept
,close
,connect
,recv
和send
的手册页提到系统调用时errno.EINTR
可以显示被信号打断了。
我在这里很无能。
python做了什么?它是否会自动重试该调用,它是否会使用该错误引发socket.error?如果引发异常,我该怎么办?我可以在我的单元测试中自己生成这些信号吗?
答案 0 :(得分:1)
Python只是重试调用并隐藏来自用户的信号(有助于跨平台一致性-EINTR不存在)。您可以安全地忽略EINTR问题,但如果您还想测试它,那么很容易做到。只需设置一个不会返回的阻塞操作(例如没有传入连接的socket.accept)并向进程发送信号。