【问题标题】:what will happen if we close a closed socket如果我们关闭一个关闭的套接字会发生什么
【发布时间】:2013-03-05 12:46:27
【问题描述】:

我想知道如果我们关闭一个关闭的套接字或不存在的套接字会发生什么?
该异常会影响其他正在发送/接收数据包的套接字吗?

编辑:
对不起,我没有说清楚。我的意思是我知道它将从关闭或关闭函数返回什么以及返回意味着什么,但我不知道它会影响现有的套接字。

【问题讨论】:

  • @nlsbshtr 编辑了帖子

标签: linux sockets tcp


【解决方案1】:

可能,是的。如果您对曾经是 fd 的随机整数调用 close,您可能会破坏代码的其他部分,该部分刚刚打开了另一个获得相同 fd 编号的连接。因此,您永远不应该双重关闭 fd:尽管从内核的角度来看它是完全安全的(您可以无害地获得 EBADF),但它可能会严重扰乱您的应用程序。

【讨论】:

    【解决方案2】:

    或者 close():根据http://pubs.opengroup.org/onlinepubs/000095399/functions/close.html

    将返回-1 并将errno 设置为EBADF。 fildes 参数不是有效的文件描述符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-14
      • 2014-11-09
      • 2017-08-20
      相关资源
      最近更新 更多