Operating system 进程和线程之间的通信

Operating system 进程和线程之间的通信,operating-system,ipc,Operating System,Ipc,我知道有几种方法可以实现IPC。如管道、插座等 我的问题是: 假设我们有一个父进程a和两个子进程B和C 我知道如果B想和C通信,它需要使用IPC 问题1:在这种情况下,IPC方法是否受到限制?要实现这种IPC,是否只能使用某些类型的IPC?例如它只能使用管道,共享内存,但信号 问题2:如果子进程希望与其父进程通信,是否需要IPC? (B有它的孩子D,如果D想和A交流,需要IPC吗?) 问题3:如果B中有一个线程,D中有一个线程,这两个线程是否需要IPC进行通信 问题4:与问题3相同,两个线程如何

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

我的问题是:

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

我知道如果B想和C通信,它需要使用IPC

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

问题2:如果子进程希望与其父进程通信,是否需要IPC? (B有它的孩子D,如果D想和A交流,需要IPC吗?) 问题3:如果B中有一个线程,D中有一个线程,这两个线程是否需要IPC进行通信

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


谢谢。

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

A2.如果家长想与孩子沟通,可以(也应该)使用IPC,因为他们的流程不同。 由于父进程及其子进程与进程相关,因此任何IPC类型都可以不受限制地使用

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

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