-
跨进程通信IPC
进程间通过内核的机制完成数据交换。称之为进程间通信(inter process communication)
①管道
分为匿名管道和有名管道
匿名管道只能用于父子进程 或者兄弟进程之间也就是亲人进程
有名管道可以用于两个不同的进程。
管道都是基于内存中缓冲区间实现,大小都是固定的4KB,管道读写时确保对端的存在,读只能从头开始读,写入从末尾开始。管道的数据只能从一个方向流动,若需要双方通信需要建立两个管道,一般管道用于轻量级的进程间通信
②消息队列
存放在内核消息链表,因为存在内核中,所以大家都可以从消息链表中读写。每个消息队列都有一个消息队列标识符表示。消息队列只会在内核重启或者特定删除情况下才会消息。消息队列消息的写入是不需要其它进程等待的,先把消息写到队列中,其它进程可以通过这个队列读取消息。消息队列的读取是支持随机查询读取,想要读取特定的消息类型也是可以直接读取到的
③信号
Linux系统中用于相互进程间通信和操作的一种机制,信号可以在任何时候发送给某个进程,而无需知道那个进程的状态,如果当前进程处于未执行的状态的话,信号会被内核保存起来,那个进程告诉它可以执行力,内核才会把存储的信号发送过去。整个来说信号是一个软件层次上对中断机制的一种模拟
④共享内存
是整个IPC中效率最高的一种机制,通过多个进程直接读写同一块内存空间,内核中会专门留一块内存区,可以由需要访问的进程可以把内同一段内存区设到自己的私人地址空间,进程就可以读写这块内存,而不需要进行数据的拷贝。但是由于多个进程共享一段内存,就需要某种同步机制
⑤信号量
就是一个计数器,用于多进程对共享数据的访问进行控制,信号量的意图在于进程间同步。信号量的增减其实是原子操作,它其实是内核实现的,其实就是操作系统学习到的PV操作
⑥套接字
socket c/s结构 一个客户端一个服务端通过这两端建立一个socket连接,来完成通信
查看全部 -
跨进程通信 IPC
进程间通过内核提供的机制完成数据交换
Linux跨进程通信方式
①管道
查看全部
举报