【发布时间】:2014-12-03 07:52:49
【问题描述】:
我有两种方法可以设置文件描述符为非阻塞。
fcntl(conn_fd, F_SETFD, (fcntl(conn_fd, F_GETFD, 0)|O_NONBLOCK));
或
fcntl(conn_fd, F_SETFD, (fcntl(conn_fd, F_GETFD)|O_NONBLOCK));
和
void setnonblocking(int sock) {
int opt;
opt = fcntl(sock, F_GETFL);
if (opt < 0) {
printf("fcntl(F_GETFL) fail.");
}
opt |= O_NONBLOCK;
if (fcntl(sock, F_SETFL, opt) < 0) {
printf("fcntl(F_SETFL) fail.");
}
}
为什么函数setnonblocking可以设置文件描述符非阻塞。但是另一个不能。我在epoll获取新连接时使用这个。
【问题讨论】:
标签: c linux nonblocking epoll