进程间的7种通信方式:
1、无名管道:
即没有名字的管道,是一个特殊的文件,并且存储在内存上,不在文件系统中展示。只能适用于亲缘进程间的通信,需要在fork之前将管道文件打开,创建子进程后,子进程继承一份管道的文件描述符才能使用该管道。
2、有名管道:
即有名字的管道文件,会在文件系统创建一个管道文件,类型为p,既可以用于亲缘进程间通信,也可以用于非亲缘进程间通信。
3、信号:
是软件模拟底层硬件的中断操作,由软件实现。用户可以给某个进程发送信号,一个进程也能给另一个进程发送信号,内核也可以给某个进程发送信号。一个进程收到信号有默认、捕获、忽略这三种操作。只起到通知作用,不携带数据。
4、消息队列:
在内核空间创建一个消息队列,如果消息没有被取出,就一直存在队列中。
5、共享内存:
是所有进程间通信方式中效率最高的,可以完成数据的实时更新。因为存在共享内存段时,无需进行用户空间和内核空间的切换。且共享内存的操作不是一次性的,当共享内存段中的数据被读取后,依然存在。
6、信号量:
是完成多个进程之间同步问题。
7、套接字通信:
可以完成进程信息的跨主机通信。