linux c
fyh82615919
这个作者很懒,什么都没留下…
展开
-
进程间通信:System V消息队列,pipe,FIFO
进程间通信:System V消息队列,pipe,FIFOSystem V消息队列基本概念msggetmsgctlmsgsndmsgrcvpipe(匿名管道)基本概念popen / pcloseFIFO(有名管道)基本概念System V消息队列基本概念消息队列本质是在内核中存储的消息链表。和System V信号量/共享内存一样,首先需要使用msgget根据给定key获取消息队列标识符qid,在使用标识符链接到目标消息队列进行操作。msgsnd用于向消息队列添加新消息到队列尾部,msgrcv可以实现原创 2020-10-24 22:40:22 · 162 阅读 · 0 评论 -
进程间通信:System V 信号量,共享内存
进程间通信:System V 信号量,共享内存引言引言Unix下进程间通信的方法主要有以下几种:pipe:无名管道,一般半双工通信,只能用于继承关系的进程(fork)之间的通信,可以用于零拷贝函数spliceFIFO:有名管道,可以在独立不相关进程间全双工通信System V IPC结构:不使用Unix文件系统命名空间的一种...原创 2020-10-10 14:14:01 · 224 阅读 · 0 评论 -
socket API
socket APIsocket API概述socket 地址 API字节序socket地址及转换socket 基础 API创建socket地址绑定监听socket接受连接发起连接读写数据连接关闭参考文献socket API概述socket是网络通信端点的抽象,可用于网络间进程通信接口,Linux下socket接口主要可以分为以下几种:socket地址API:socket地址,指定通信的端点,包括:字节序转换(htonl/htons/ntohl/ntohs)地址结构体(sockaddr/soc原创 2020-09-05 19:58:13 · 720 阅读 · 0 评论 -
多路IO复用:epoll
多路IO复用:epollepoll简介epoll_createepoll_cltepoll_wait为什么事件表构建为RB-TreeLT/ET概念ET工作机制EPOLLONESHOT (Linux 2.6.2+)应用场景参考文献epoll简介epoll在linux 2.5.44内被引入,FreeBSD, MacOS中类似的实现是kqueue,epoll主要解决select,poll对于fd或事件结构需要O(n)的循环遍历。epoll在注册事件时,会将事件添加到红黑树中并注册回调事件,对红黑树搜索寻找就绪原创 2020-08-29 16:09:47 · 202 阅读 · 0 评论 -
多路IO复用:select,poll
多路IO复用:select,poll为什么使用多路IO复用select函数签名timeoutfd_setpselect使用过程存在问题poll函数签名pollfd特点与问题参考资料为什么使用多路IO复用使用场景:同时需要对多个低速IO进行读写操作解决方法与问题:最简单低速阻塞IO(pipe,FIFO,socket)会持续阻塞直到有数据时读入,如果有两个读fd,第二个fd只有当前一个fd完成读入操作后,才能读取自己的数据。如果第二个fd数据提前到达也无法处理。对每一个阻塞读fd开辟一个线程/进程原创 2020-08-21 22:10:25 · 113 阅读 · 0 评论