gpt4 book ai didi

sockets - Linux 套接字 - 使用 O_NONBLOCK 设置非阻塞

转载 作者:行者123 更新时间:2023-12-05 04:45:49 29 4
gpt4 key购买 nike

如果我使用 fcntl(sockfd, F_SETFL, O_NONBLOCK); 使 TCP 套接字描述符成为非阻塞的,这是否会使所有后续套接字 API 都像 read()/listen()/accept()/etc.. 也是非阻塞的?

最佳答案

手册页中有官方答案,特别是 socket(7) :

It is possible to do nonblocking I/O on sockets by setting the O_NONBLOCK flag on a socket file descriptor using fcntl(2). Then all operations that would block will (usually) return with EAGAIN (operation should be retried later); connect(2) will return EINPROGRESS error. The user can then wait for various events via poll(2) or select(2).

是的,设置 O_NONBLOCK 将导致阻塞操作返回 EAGAIN/EINPROGRESS 而不是阻塞。

关于sockets - Linux 套接字 - 使用 O_NONBLOCK 设置非阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69043581/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com