摘要:
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明: #define __FD_SETSIZE 1024 表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,但这似乎并不治本。 epoll的接口非常简单,一共... 阅读全文
摘要:
poll()函数:这个函数是某些Unix系统提供的用于执行与select()函数同等功能的函数,下面是这个函数的声明:#include int poll(struct pollfd fds[], nfds_t nfds, int timeout);参数说明:fds:是一个struct pollfd结构类型的数组,用于存放需要检测其状态的Socket描述符;每当调用这个函数之后,系统不会清空这个数组,操作起来比较方便;特别是对于socket连接比较多的情况下,在一定程度上可以提高处理的效率;这一点与select()函数不同,调用select()函数之后,select()函数会清空它所检测的soc 阅读全文
摘要:
1 /* 2 重定向的实例 3 dup2函数 4 5 利用filefd来代替STDOUT(标准输出流),write写入filefd的数据,重定向写出到STDOUT中; 6 */ 7 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 15 int main(void)16 {17 #define STDOUT 1 //标准输出文件描述符号18 19 int filefd;20 char msg[] = "This is a test\n";21 22 ... 阅读全文