accept是否可能返回与sockfd相同的值?

时间:2018-05-31 03:21:50

标签: c linux sockets

accept()是否可能返回与sockfd相同的值?

例如

int newfd = accept(sockfd, NULL, NULL);

是否可以newfd == sockfd

1 个答案:

答案 0 :(得分:3)

简短的回答是

accept() man page解释说:

  

accept()系统调用与基于连接的套接字类型(SOCK_STREAMSOCK_SEQPACKET)一起使用。它在侦听套接字的挂起连接队列上提取第一个连接请求,sockfd创建一个新的连接套接字,并返回一个引用该套接字的新文件描述符。新创建的套接字未处于侦听状态。原始套接字sockfd不受此调用的影响。

返回此套接字描述符。

sockfd参数是一个使用socket()创建的套接字,绑定到bind()的本地地址,并且在调用listen()后正在侦听连接

在调用accept()之前,返回的描述符不存在。