我知道如何监控两个文件描述符,但是4或5个文件描述符呢?
下面是我如何使用2个文件描述符。
fd_mon = (fd1 > fd2 ? fd1 : fd2) + 1;
select(fd_mon, &readfds, NULL, NULL, NULL);如何监控3个或更多的文件描述符?
发布于 2012-11-08 03:15:57
(fd1 < fd2 ? fd1 : fd2) < fd3 ? (fd1 < fd2 ? fd1 : fd2) : fd3;
它是针对3个变量的,您可以将其用于与变量一样多的变量
发布于 2012-11-08 03:12:46
使用FD_SET宏向传递给select的集合添加文件描述符。你还需要它的伙伴FD_ZERO、FD_ISSET和FD_CLR。在上面的例子中,只需为每个文件描述符和相同的文件集调用FD_SET即可。
谷歌- "man select",它甚至有一个例子!你可能必须在一些发行版中安装它,例如,我不认为Ubuntu默认安装了所有的开发手册页。
发布于 2012-11-08 03:14:42
您可以在打开每个描述符之后进行测试:
max_fd = 0;
fd = open(...);
if (fd > max_fd) {
max_fd = fd;
}
....
select(max_fd+1, &readfds, NULL, NULL, NULL);https://stackoverflow.com/questions/13276387
复制相似问题