关注
进程通信:
每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。
1 匿名管道通信
匿名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
通过匿名管道实现进程间通信的步骤如下:
父进程创建管道,得到两个⽂件描述符指向管道的两端
父进程fork出子进程,⼦进程也有两个⽂件描述符指向同⼀管道。
父进程关闭fd[0],子进程关闭fd[1],即⽗进程关闭管道读端,⼦进程关闭管道写端(因为管道只支持单向通信)。⽗进程可以往管道⾥写,⼦进程可以从管道⾥读,管道是⽤环形队列实现的,数据从写端流⼊从读端流出,这样就实现了进程间通信。
2 高级管道通信
高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。
3 有名管道通信
有名管道 : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
4 消息队列通信
消息队列: 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
5 信号量通信
信号量: 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
6 信号
信号 : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
7 共享内存通信
共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
8 套接字通信
套接字 : 套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。
查看原帖
2 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
123920次浏览 2080人参与
# 实习简历求拷打 #
16715次浏览 194人参与
# 作业帮求职进展汇总 #
84000次浏览 554人参与
# 秋招被挂春招仍然能投的公司 #
7815次浏览 108人参与
# 实习要如何选择和准备? #
128554次浏览 1486人参与
# 外包能不能当跳板? #
54291次浏览 256人参与
# 诺瓦星云求职进展汇总 #
233527次浏览 1736人参与
# mt对你说过最有启发的一句话 #
39072次浏览 454人参与
# 公司情报交流地 #
126698次浏览 1227人参与
# 为了找工作你花了哪些钱? #
74890次浏览 361人参与
# 你觉得机械有必要实习吗 #
69861次浏览 485人参与
# 投格力的你,拿到offer了吗? #
153446次浏览 822人参与
# 一起聊美团 #
307681次浏览 1767人参与
# 什么是优秀的实习经历 #
9417次浏览 226人参与
# 摸鱼被leader发现了怎么办 #
103908次浏览 659人参与
# 京东开奖 #
632094次浏览 3180人参与
# 秋招特别不鸣谢 #
16639次浏览 186人参与
# 考研失败就一定是坏事吗? #
202654次浏览 1389人参与
# 选实习,你更看重哪方面? #
15331次浏览 230人参与
# 安克创新求职进展汇总 #
62485次浏览 541人参与