今天在实现I/O复用epoll来提高服务器性能时,出现了 Read error:Bad file description错误.
通过认真通读代码后,发现是错将listen中参数的描述符用于read函数中,而实际上在listen之后要执行accept函数,其返回的描述符才是read函数中应该传入的。
liatenfd = socket(AF_INET, SOCK_STREAM, 0)
listen(listenfd, 5);
connfd = accept(listenfd, (struct sockaddr*)&clientAddr, &clientAddrLen);
...
nread = read(connfd, buf, MAXSIZE); // 不应该是read(listenfd, buf, MAXSIZE);
...