上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 100 下一页

2013年7月15日

UNIX环境高级编程——select和epoll的区别

摘要: select和epoll都用于监听套接口描述字上是否有事件发生,实现I/O复用select(轮询)#include #include int select (int maxfdpl, fd_set* readset, fd_set* writeset, fd_set* exceptset, con... 阅读全文

posted @ 2013-07-15 15:59 胡永光 阅读(131) 评论(0) 推荐(0) 编辑

UNIX环境高级编程——epoll函数使用详解

摘要: epoll - I/O event notification facility 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听... 阅读全文

posted @ 2013-07-15 15:24 胡永光 阅读(488) 评论(0) 推荐(0) 编辑

UNIX环境高级编程——select、poll和epoll

摘要: 一、select select目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点,事实上从现在看来,这也是它所剩不多的优点之一。 select的一个缺点在于单个进程能够监视的文件描述符的数量存在最大限制,在Linux上一般为1024,不过可以通过修改宏定义甚至重新编译内... 阅读全文

posted @ 2013-07-15 15:08 胡永光 阅读(211) 评论(0) 推荐(0) 编辑

UNIX环境高级编程——I/O多路转接(select、pselect和poll)

摘要: I/O多路转接:先构造一张有关描述符的列表,然后调用一个函数,直到这些描述符中的一个已准备好进行I/O时,该函数才返回。在返回时,它告诉进程哪些描述符已准备好可以进行I/O。 poll、pselect和select这三个函数使我们能够执行I/O多路转接。一、select函数在所有... 阅读全文

posted @ 2013-07-15 11:39 胡永光 阅读(161) 评论(0) 推荐(0) 编辑

UNIX环境高级编程——非阻塞设置

摘要: 非阻塞I/O使我们可以调用open、read和write这样的I/O操作,并使这些操作不会永远阻塞。如果这种操作不能完成,则调用立即出错返回,表示该操作如继续执行将阻塞。对于一个给定的描述符有两种方法对其指定非阻塞:(1)如果调用open获得描述符,则可指定O_NONBLOCK标志。(2... 阅读全文

posted @ 2013-07-15 10:56 胡永光 阅读(126) 评论(0) 推荐(0) 编辑

2013年7月10日

UNIX环境高级编程——记录上锁(fcntl函数)以及死锁检测

摘要: 一、记录锁 record locking 功能:当一个进程正在读或修改文件的某个部分时,它可以阻止其它进程修改同一文件区。 字节范围锁 byte-range locking 二、历史 flock函数,可以锁整个文件,不能锁文件中的一部分。 fcntl函数,增加了记录锁的功能。 lockf函数,在f... 阅读全文

posted @ 2013-07-10 11:37 胡永光 阅读(386) 评论(0) 推荐(1) 编辑

2013年7月9日

UNIX环境高级编程——存储映射I/O(mmap函数)

摘要: 共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之... 阅读全文

posted @ 2013-07-09 10:02 胡永光 阅读(323) 评论(0) 推荐(0) 编辑

2013年7月8日

UNIX环境高级编程——System V 共享内存区

摘要: 共享内存区域是被多个进程共享的一部分物理内存。如果多个进程都把该内存区域映射到自己的虚拟地址空间,则这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其... 阅读全文

posted @ 2013-07-08 14:19 胡永光 阅读(170) 评论(0) 推荐(0) 编辑

UNIX环境高级编程——system V消息队列

摘要: unix早期通信机制中的信号能够传送的信息量有限,管道则只能传送无格式字节流,这远远是不够的。 消息队列(也叫报文队列)客服了这些缺点: 消息队列就是一个消息的链表。 可以把消息看作一个记录,具有特定的格式。 进程可以按照一定的规则向消息队列中添加新消息;... 阅读全文

posted @ 2013-07-08 10:47 胡永光 阅读(306) 评论(0) 推荐(0) 编辑

2013年7月7日

UNIX环境高级编程——进程间通讯方法整理

摘要: 一.无名管道pipe#include int pipe(int fd [2])二.fifo#include int mkfifo(const char *path, mode_t mode);三.信号#include void (*signal(int sig, void (*func)(int)... 阅读全文

posted @ 2013-07-07 18:45 胡永光 阅读(206) 评论(0) 推荐(0) 编辑

上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 100 下一页

导航