如果我们关闭一个封闭的套接字会发生什么

时间:2013-03-05 12:46:27

标签: linux sockets tcp

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

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

或关闭():每http://pubs.opengroup.org/onlinepubs/000095399/functions/close.html

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