??
1 epoll
epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并、发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Read...
分类:
其他好文 时间:
2014-10-01 01:34:50
阅读次数:
370
??
1 select
A:select能监听的文件描述符个数受限于FD_SETSIZE,一般为1024,单纯改变进程打开
的文件描述符个数并不能改变select监听文件个数
B:解决1024以下客户端时使用select是很合适的,但如果链接客户端过多,select采用的是轮询模型,会大大降低服务器响应效率,不应在select上投入更多精力
2
依赖的头文件
...
分类:
其他好文 时间:
2014-10-01 00:12:10
阅读次数:
215
??
1 poll
A
依赖的头文件
#include
B
函数声明
int poll(struct pollfd *fds, nfds_t nfds,int timeout);
struct pollfd {
int fd; /*
文件描述符*/
short events; /*
监控的事件*/
short revents...
分类:
其他好文 时间:
2014-09-30 23:55:20
阅读次数:
204
摘要:本文主要讨论文件控制fcntl函数的基本应用.dup函数可以复制文件描述符,而fcntl函数与dup函数有着异曲同工之妙.并且还有更加强大的功能,可以获取或设置已打开文件的性质,操作文件锁....
分类:
其他好文 时间:
2014-09-30 21:18:08
阅读次数:
291
stdin->STDIN_FILENO->键盘stdout->STDOUT_FILENO->屏幕要让进程的标准输入或标准输出重定向,有两种方式:1.重定向到一个文件,该文件用路径标志:freopen2.重定向到一个文件描述符:dup2dup2是让fd2与fd1共享文件表项。例如,为了让标准输入重定向...
分类:
其他好文 时间:
2014-09-29 21:18:11
阅读次数:
193
嵌入式Linux应用程序开发详解华清远见本文只是阅读文摘。创建一个守护进程的步骤:1、创建一个子进程,然后退出父进程;2、在子进程中使用创建新会话---setsid();3、改变当前工作目录---chdir();4、重新设置文件权限掩码---umask();5、关闭所有的文件描述符---close(...
分类:
系统相关 时间:
2014-09-28 10:40:31
阅读次数:
285
在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因。在操作系统提供的调用中,返回错误码非常常见。比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返回-1。用错误码来表示是否出错十分不便,因为函数本身应该返回的正常结果...
分类:
编程语言 时间:
2014-09-28 10:16:41
阅读次数:
189
??
1多进程并发服务器
使用多进程并发服务器时要考虑以下几点:
A.父最大文件描述个数(父进程中需要close关闭accept返回的新文件描述符)
B.系统内创建进程个数(和内存大小相关)
C.进程创建过多是否降低整体服务性能(进程调度)
2.案例说明
server.c,代码如下:
#include
#inclu...
分类:
其他好文 时间:
2014-09-28 01:16:00
阅读次数:
320
??
1多进程并发服务器
在使用线程模型开发服务器时需要考虑以下问题:
A
调整进程最大文件描述符上限
B
线程如有共享数据,考虑线程同步
C
服务于客户端线程退出时,退出处理
D
2.案例说明
server.c,代码如下:
/* server.c */
#include
#include
...
分类:
编程语言 时间:
2014-09-28 00:25:40
阅读次数:
199
要对kamailio/opensips进行单步调试,就需要先了解其代码的结构及运行方式,kamailio/opensips使用Reactor和Proactor结合的IO网络模型,使用主进程负责监听网络,当有连接产生或首包到达时,就通过pipe将文件描述符发送给worker进程,worker进程就会负责此连接的数据取读、业务处理、数据发送等事情,然后再次等待此socket...
分类:
数据库 时间:
2014-09-24 23:56:07
阅读次数:
570