首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为不同的系统使用IPC

问为不同的系统使用IPC
EN

Stack Overflow用户
提问于 2010-09-18 23:56:44
回答 3查看 3.4K关注 0票数 1

嗨,

我在最近的一次面试中被问到这个问题,但我没有回答,因为我是IPC的新手。

如果进程位于不同的系统上,您将如何使用IPC?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-19 00:05:05

IPC就是进程间通信的意思。进程之间的通信方式有很多,两个进程是否在同一台机器上是没有区别的。

如果您跨机器交谈,则某些形式对您不可用,例如共享内存、信号、管道、内存映射文件或信号量。(如果你真的想走这条路,有中间件可以模拟共享内存)。

一些比较常用的方法有:

大多数操作系统的文件。

Signal大多数操作系统;有些系统只实现C运行时库中的signals,并不实际支持将其用作进程间通信技术。

Socket大多数操作系统。

Message queue大多数操作系统。

管道所有POSIX系统,Windows.

命名管道所有的POSIX系统,Windows.

信号量所有POSIX系统,视窗。

所有的POSIX系统的共享内存。

消息传递(无共享)在MPI范例、Java RMI、CORBA、MSMQ、MailSlots等中使用。

内存映射文件所有的POSIX系统。如果使用临时文件,此技术可能会带来竞争条件风险。

编辑:此列表取自Wikipedia。这份清单和任何一份都一样好。

票数 2
EN

Stack Overflow用户

发布于 2010-09-19 00:00:44

IPC是一个抽象的术语,表示驻留在相同或不同系统上的进程之间的任何进程间通信。

如果您在不同的系统上有进程,那么最明显的是基于TCP的通信,包括使用TCP作为传输的IPC工具。但当然,这并不是交换信息的唯一方式。

票数 0
EN

Stack Overflow用户

发布于 2010-09-19 00:06:13

进程间通信,更多的是一种在 one机器内的不同进程之间共享数据的技术,通过这种方式,数据传递绑定了不同进程之间的耦合。

第一个

  • 使用内存映射技术,其中创建了一个内存映射,其他进程打开内存映射用于reading/writing...
  • The第二个是,使用套接字与一个another...this通信具有很高的开销,因为每个进程都必须打开套接字,跨...尽管使用管道或命名管道对第三种方法有效,但可以在here

中找到一个非常好的例子

如果一个进程是用一种语言编写的,而另一个进程是用另一种语言编写的,那么如何保证每个进程读取的数据流是兼容的,你可以使用谷歌的协议缓冲区来处理this,有一个可用的.NET版本,here。

尽管IPC机制在不同程度上是透明的,并且只在一个域中工作,例如Windows到Windows,Linux到Linux,但您也可以使用Windows到Linux或反之亦然,尽管必须注意,因为API差异和功能决定了数据传输编码方案协议的结果。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3742334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档