进程间通信的方式

2026-03-07 02:38:29

1、1,传统的Unix通信机制

管道/匿名管道(pipe),有名管道(FIFO),信号(Signal),消息(Message)队列,共享内存(share memory), 信号量(semaphore), 套接字(socket)。

进程间通信的方式

2、2,管道的局限

只支持单向数据流,只能用于具有亲缘关系的进程之间;没有名字,管道的缓冲区是有限的(管道制存在于内存中,在管道创建时,为缓冲区分配一个页面大小)。

进程间通信的方式

3、3,无名管道阻塞问题

无名管道无需显示打开,创建时直接返回文件描述符,在读写时需要确定对方的存在,否则将退出。如果当前进程向无名管道的一端写数据,必须确定另一端有某一进程。

进程间通信的方式

4、4,有名管道阻塞问题

有名管道在打开时需要确实对方的存在,否则将阻塞。即以读方式打开某管道,在此之前必须一个进程以写方式打开管道,否则阻塞。

进程间通信的方式

5、5,信号事件主要有两个来源

硬件来源:用户按键输入Ctrl+C退出、硬件异常如无效的存储访问等。

软件终止:终止进程信号、其他进程调用kill函数、软件异常产生信号。

进程间通信的方式

6、6,目前主要有两种类型的消息队列

POSIX消息队列以及System V消息队列,系统V消息队列目前被大量使用。系统V消息队列是随内核持续的,只有在内核重起或者人工删除时,该消息队列才会被删除。

进程间通信的方式

7、7延伸阅读

Linux支持的主要三种共享内存方式:mmap()系统调用、Posix共享内存,以及System V共享内存实践

进程间通信的方式

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢