进程和线程之间的通信

时间:2014-03-19 08:11:12

标签: operating-system ipc

我知道有几种方法可以实现IPC。如管道,插座等。

这是我的问题:

假设我们有一个父进程A和两个子进程B和C.

我知道如果B想要与C沟通。它需要使用IPC。

Q1:在这种情况下,IPC方法是否有限?要实现这种IPC,是否只能使用某些类型的IPC?例如它只能使用管道,共享内存但信号。

Q2:如果子进程想要与其父进程通信,是否需要IPC?     (如果B有孩子D怎么样,如果D想要与A沟通,是否需要IPC?) Q3:如果B中的线程和D中的线程,这两个线程是否需要IPC进行通信?

问题4:与Q3相同的问题,两个线程1在子进程中如何,另一个在父进程中?

由于

1 个答案:

答案 0 :(得分:1)

A1。这取决于您的设计。 父母可以通过分配必要的IPC结构(管道,共享内存等)以及将IPC密钥传播给孩子来帮助在子女之间建立IPC。 如果父级为结构分配和密钥传播做了所有必要的工作,您可以使用任何IPC方法而不受任何限制。 如果父级没有在其子级之间建立IPC或者不在它们之间共享IPC密钥,那么在没有相关(非分叉)进程之间存在限制,就像任何其他IPC一样。在这种情况下,例如,您不能使用管道,但仍然可以使用共享内存或命名管道(考虑密钥或名称约定)。

A2。如果父母想要与孩子沟通,它可以(并且应该)使用IPC,因为他们是不同的进程。 由于父级及其子级是相关的进程,因此可以使用任何IPC类型而不受任何限制。

A3。由于线程属于不同的进程,因此您需要使用IPC。 应该使用什么类型的IPC?这取决于你的设计。答案1和2试图解释它。

A4。由于线程属于不同的进程,因此需要使用IPC。 由于这些过程是相关的(父和子),理论上可以使用任何IPC方法。