【发布时间】:2010-09-28 03:43:41
【问题描述】:
如何使用 fcntl 取消设置已设置的标志?
例如我可以使用
将套接字设置为非阻塞模式fcntl(sockfd, F_SETFL, flags | O_NONBLOCK)
现在,我想取消设置 O_NONBLOCK 标志。
我试过 fcntl(sockfd, F_SETFL, flags | ~O_NONBLOCK)。它给了我错误 EINVAL
【问题讨论】:
-
试试
flags & ~O_NONBLOCK。即&,而不是|。 -
是的,你是对的。复制粘贴问题。 :-)。编码时需要思考。