1. 无名管道:管道是内核的一个缓冲区。管道是单方向的、先进先出的无结构的,固定大小的字节流,管道将一个进程的标准输出和和另一个进程的标准输入连接在一起,在管道的尾部写入数据,从管道的头部读出数据,数据从管道读出后,管道中的该数据也将被移走。管道只能用于具有血缘关系的进程间通信。
2. 有名管道:有名管到个无名管道一样,都是半双工通信,最大额不同是:有名管道克服了管道只能用于具有血缘关系的进程间通信,可以在不具血缘关系的进程间通信。
3. 信号量:信号量,主要提供一种锁机制,用来防止多个进程或多个线程在同时时刻访问相同的共享资源。一般用来作为不同进程或者线程间的同步手段。
4. 消息队列:消息队列是有消息组成的链表,存储在内核中,并由消息队列表示符标识。消息队列克服了信号传递信息少,管道只能传递无类型字节流等缺点。
5. 信号:信号是一种比较复杂的进程通信机制,主要用来提醒当前进程某个时间已经发生。
6. 共享内存:共享内存是一种十分简便有效的通信机制。正在运行的进程通过数据共享来传递数据信息,不同进程的共享内存通常被安排为同一段物理内存,进程可将共享内存连接入自己的地址空间,使用该共享内存的进程都可以访问到该共享内存的地址。当一个进程在共享内存中写入数据后,所做的改动将立即影响到使用该共享内存的所有进程。
6. 套接字:前述的进程通信机制主要用于同一计算机的不同进程,而套接字可以用于互联在网络中的不同计算机进程间的通信。