如何使用fcntl取消已设置的标志?
对于例如我可以使用将套接字设置为非阻塞模式
fcntl(sockfd,F_SETFL,flags | O_NONBLOCK)
现在,我想取消设置O_NONBLOCK标志.
我试过fcntl(sockfd,flags | ~O_NONBLOCK).它给了我错误EINVAL
解决方法
int oldfl; oldfl = fcntl(sockfd,F_GETFL); if (oldfl == -1) { /* handle error */ } fcntl(sockfd,oldfl & ~O_NONBLOCK);
未经测试,但希望这会有所帮助. 原文链接:https://www.f2er.com/linux/393291.html