关注
进程通信:
每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。
1 匿名管道通信
匿名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
通过匿名管道实现进程间通信的步骤如下:
父进程创建管道,得到两个⽂件描述符指向管道的两端
父进程fork出子进程,⼦进程也有两个⽂件描述符指向同⼀管道。
父进程关闭fd[0],子进程关闭fd[1],即⽗进程关闭管道读端,⼦进程关闭管道写端(因为管道只支持单向通信)。⽗进程可以往管道⾥写,⼦进程可以从管道⾥读,管道是⽤环形队列实现的,数据从写端流⼊从读端流出,这样就实现了进程间通信。
2 高级管道通信
高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。
3 有名管道通信
有名管道 : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
4 消息队列通信
消息队列: 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
5 信号量通信
信号量: 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
6 信号
信号 : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
7 共享内存通信
共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
8 套接字通信
套接字 : 套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。
查看原帖
2 1
相关推荐
12-17 18:14
华南师范大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 什么是优秀的实习经历 #
9028次浏览 220人参与
# 实习简历求拷打 #
14979次浏览 178人参与
# 被上班搭子“传染”了哪些习惯 #
5994次浏览 100人参与
# 作业帮求职进展汇总 #
83687次浏览 549人参与
# 工作后,你落下了哪些病根 #
14226次浏览 193人参与
# 秋招被挂春招仍然能投的公司 #
7335次浏览 103人参与
# 实习要如何选择和准备? #
128456次浏览 1485人参与
# 外包能不能当跳板? #
54220次浏览 256人参与
# 诺瓦星云求职进展汇总 #
233441次浏览 1736人参与
# mt对你说过最有启发的一句话 #
38037次浏览 452人参与
# 公司情报交流地 #
126533次浏览 1227人参与
# 为了找工作你花了哪些钱? #
74825次浏览 361人参与
# 你觉得机械有必要实习吗 #
69750次浏览 485人参与
# 投格力的你,拿到offer了吗? #
153192次浏览 819人参与
# 一起聊美团 #
307447次浏览 1764人参与
# 摸鱼被leader发现了怎么办 #
102958次浏览 654人参与
# 京东开奖 #
631861次浏览 3180人参与
# 秋招特别不鸣谢 #
16282次浏览 185人参与
# 考研失败就一定是坏事吗? #
201966次浏览 1382人参与
# 选实习,你更看重哪方面? #
14830次浏览 223人参与
