linux – 程序如何相互通信?
发布时间:2020-12-13 13:42:48 所属栏目:Linux 来源:网络整理
导读:procceses如何相互沟通?到目前为止,使用我学到的所有内容编程,我无法解释套接字,文件系统和其他在程序之间发送消息的工作方式. 顺便说一下,如果要添加任何特定于OS的操作系统,我会使用基于Linux的操作系统.提前致谢.这个问题一直困扰着我.我也猜测内核与它
procceses如何相互沟通?到目前为止,使用我学到的所有内容编程,我无法解释套接字,文件系统和其他在程序之间发送消息的工作方式.
顺便说一下,如果要添加任何特定于OS的操作系统,我会使用基于Linux的操作系统.提前致谢.这个问题一直困扰着我.我也猜测内核与它有关. 解决方法
在大多数IPC(进程间通信)机制的情况下,您的问题的一般答案是:进程A调用内核将指针传递给缓冲区,数据要传输到进程B,进程B调用内核(或者已经被阻塞)在调用内核时)将指针传递给缓冲区以填充来自进程A的数据.
这种一般性描述适用于sockets,pipes,System V message queues,普通文件等.正如您所看到的,通信成本很高,因为它涉及至少一个上下文切换. Signals构成异步IPC机制,其中一个进程可以向另一个进程发送简单通知,触发由第二进程注册的处理程序(如果没有注册处理程序,则根据信号,可选择不执行任务,停止或终止该进程). 为了传输大量数据,可以使用System V shared memory,在这种情况下,两个进程可以访问主存储器的相同部分.请注意,即使在这种情况下,也需要使用同步机制,如System V semaphores,这也导致上下文切换. 这就是为什么当流程需要经常进行通信时,最好在单个流程中创建它们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux 的常用命令---------第十五阶段(Apache与LAMP架构)
- test命令-linux shell 脚本
- sudo – 如何在不使用root的情况下运行supervisord?
- linux下查看cpu,内存,硬盘等硬件信息的方法
- 如何通过Linux恢复Symantec Backup Exec备份?
- linux – wget和curl以某种方式在下载时修改bencode文件
- linux – AppArmor – root:“你没有足够的权限来阅读配置
- mount – 在Intel EFI shell中未检测到USB驱动器
- 寒假-12
- 如何将.Net Core应用程序部署在Linux操作系统上运行