当前位置: 首页 > 面试题库 >

过滤掉破损的管道错误

纪畅
2023-03-14
问题内容

我收到了error一个io.Copy调用返回的消息,已将套接字(TCPConn)作为目标传递给了该调用。可以预期的是,远程主机在它们受够了之后会简单地断开连接,而我不会从他们那里收到任何信息。

发生掉线时,出现以下错误:

write tcp 192.168.26.5:21277: broken pipe

但是我只有一个error接口。我该如何区分折断的管道错误和其他类型的错误?

if err.Errno == EPIPE...

问题答案:

断开的管道错误在syscall软件包中定义。您可以使用相等运算符将错误与syscall中的错误进行比较。检查http://golang.org/pkg/syscall/#constants以获取完整的syscall错误列表。在页面上搜索“
EPIPE”,您将发现所有已定义的错误归为一组。

if err == syscall.EPIPE {
    /* ignore */
}

如果您希望获得实际的errno数(尽管它几乎没有用),则可以使用类型断言:

if e, ok := err.(syscall.Errno); ok {
    errno = uintptr(e)
}


 类似资料:
  • 上周六,我们开始遇到管道破裂的问题,每天清晨都有一个通过石英调度器运行的作业。下面是一些细节。 该作业由一个本地java类组成,该类调用基于Talend的作业。每个基于Talend的作业都会出现断管错误。奇怪的是,当我运行通过调度程序提交的同一个java类时,不会抛出错误,作业也会成功运行。此外,该作业流在Tomcat中运行。 我应该在Talend jobs中做些什么,看看是否可以先建立连接?正如

  • 我正在处理一个巨大的xml文档(包含大约一百万个条目),然后使用rabbitmq将一个格式化版本导入数据库。每次发布大约200000个条目后,我都会收到一个断管错误,rabbitmq无法从中恢复。 通知错误:f写():发送2651字节失败,errno=11资源暂时不可用在[/var/www/ribbon/app/控制台/命令/lib/php_amqplib/amqp.inc,第439行] 注意错误

  • 问题内容: 我想在flask应用程序中发送本地REST请求,如下所示: 发送导致整个烧瓶应用程序冻结。当发送终止信号时,出现管道错误。有什么办法可以防止烧瓶冻结? 问题答案: 在能够处理并发请求(可能是gunicorn或uWSGI)的适当WSGI服务器下运行flask应用程序,它将起作用。在开发时,请使用以下命令在Flask提供的服务器中启用线程: 但请注意,不建议将Flask服务器用于生产环境。

  • 问题内容: 我想在flask应用程序中发送本地REST请求,如下所示: 发送curl -X POST http://localhost:5000/john/hi导致整个烧瓶应用程序冻结。当我发送一个终止信号时,我得到一个坏的管道错误。有什么办法可以防止flask冻结? 问题答案: 在能够处理并发请求(可能是gunicorn或uWSGI)的适当WSGI服务器下运行flask应用程序,它将起作用。在开

  • 我有一个非常奇怪的问题,我希望你的眼睛能帮助解决它。 我定义了一个函数,它通过BASH连接到Oracle SQL数据库。连接后,我使用一个herdeoc传入一个简单的select语句,该语句查找最大订阅id并递增它,具体取决于函数被调用的次数。代码如下: 在命令行调用函数时,上述代码非常有效: 但是,当函数通过管道传输到AWK语句时,函数不再抖动,这毫无意义!请参阅下面的输出: 我不明白。哈哈,我

  • 问题内容: 我在gradle中运行测试时遇到问题。我知道我的gradle配置可以在其他机器上运行,但是不幸的是我的不行。我们有junit test和testNG,当尝试执行时,它们都产生如下的stacktrace: 它将连续产生此错误并带有不同的编号(Gradle Worker 2,Gradle Worker 3等)。有没有人遇到过类似的问题? 我正在使用gradle 1.6。 编辑:我忘了告诉我