进程间的通信方式汇总
2023-09-11 14:15:01 时间
近期在设计一个多进程的系统,主进程和子进程的通讯和调用方式是当中的一个关键问题,程序须要考虑跨平台和跨语言,后台守护进程和UI界面,子进程管理等,对可靠性要求高,还是非常复杂的。
今天掰一掰进程间通信的问题
# 命令行參数和返回值调用。最直接的方法
跨平台和跨语言应该OK
# 管道( pipe ):管道是一种半双工的通信方式,数据仅仅能单向流动。并且仅仅能在具有亲缘关系的进程间使用。
进程的亲缘关系一般是指父子进程关系。
windows下管道不好用吧
linux/unix上的
# 信号量( semophore ) : 信号量是一个计数器,能够用来控制多个进程对共享资源的訪问。它常作为一种锁机制,防止某进程正在訪问共享资源时,其它进程也訪问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
# 消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。
消息队列克服了信号传递信息少、管道仅仅能承载无格式字节流以及缓冲区大小受限等缺点。
# 信号 ( sinal ) : 信号是一种比較复杂的通信方式,用于通知接收进程某个事件已经发生。
# 共享内存( shared memory ) :共享内存就是映射一段能被其它进程所訪问的内存,这段共享内存由一个进程创建,但多个进程都能够訪问。共享内存是最快的 IPC 方式,它是针对其它进程间通信方式执行效率低而专门设计的。
它往往与其它通信机制,如信号两。配合使用,来实现进程间的同步和通信。
# 套接字( socket ) : 套解口也是一种进程间通信机制,与其它通信机制不同的是,它可用于不同及其间的进程通信。
跨平台应该ok
相关文章
- Python笔记-进程Process、线程Thread、上锁
- electron 主进程,和渲染进程的通信
- 8-1-1python语法基础-并发编程-进程-进程创建,进程冲突,进程之间通信,进程池,
- 用户空间与内核空间,进程上下文与中断上下文[总结]
- 【刷题】Linux进程通信方式
- 【python】进程与线程
- 重新整理操作系统概念系类——进程通信
- [Linux]系统管理: 进程管理(ps/top/pstree/kill/pkill), 工作管理, 系统资源查看, 系统定时任务
- 使用JDK自带的jmap和jhat监控处于运行状态的Java进程
- Qt 进程间的通信(通过QSharedMemory)
- 进程的挂起 进程的等待 进程的终止 特殊进程 孤儿进程 守护进程 sleep函数 exit 函数 _exit函数 wait 函数 waitpid 函数
- Linux下的多进程通信(IPC)原理及实现方案(管道-消息队列-信号量-共享内存-套接字)
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具收尾操作 | 关闭注入的动态库 | 恢复寄存器 | 脱离远程调试附着 )
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具的 main 函数分析 )
- 【Android 进程保活】应用进程拉活 ( JobScheduler 拉活 | JobScheduler 使用流程 | JobService 服务 | 不同版本兼容 | 源码资源 )
- selenium + FireFox出现未销毁进程积累
- Linux中查看socket进程状态
- 进程表项字段理解
- C# 调用Windows API实现两个进程间的通信
- SystemVerilog学习-09-进程间同步、通信和虚方法
- Linux 与 Windows【管道符】查看指定进程
- 〖Python语法进阶篇⑤〗 - 进程间的通信