管道:
无名管道(内存文件):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲 缘关系的进程之间使用。进程的亲缘关系通常是指父子进程关系。
有名管道(FIFO文件,借助文件系统):有名管道也是半双工的通信方式,但是允许在没有亲缘 关系的进程之间使用,管道是先进先出的通信方式。
共享内存:
共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多 个进程都可以访问。共享内存是最快的IPC方式,它是针对其他进程间通信方式运行效率低而专门设 计的。它往往与信号量,配合使用来实现进程间的同步和通信。
消息队列:
消息队列是有消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号 传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
套接字:适用于不同机器间进程通信,在本地也可作为两个进程通信的方式。
信号:用于通知接收进程某个事件已经发生,比如按下ctrl + C就是信号。
信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,实 现进程、线程的对临界区的同步及互斥访问。