子流程是否与其父流程共享任何资源?

时间:2015-08-23 17:15:33

标签: multithreading subprocess

我阅读了以下内容,并想知道是否可能或正确!

  

"创建执行和创建1st的应用程序进程(A)   线程来执行应用程序(应用程序进程(B))。第二个   可以在应用程序进程(A)中创建线程   执行代理程序(线程或进程C)。因此,应用程序进程(B)和代理程序(线程或进程C)可以共享操作系统分配的资源。"

我的问题是:

  1. 执行由流程A创建的流程B和主题 C,共享 任何资源?
  2. 执行流程A创建的流程B和流程 C,共享 任何资源?
  3. 我认为这是一个过程'即使资源是由其他进程(父进程)创建/执行的,资源也是隔离的。 如果我错了,我会很高兴得到他们共享的资源以及上面列出的用例以及操作系统(Windows / iOS / Linux)中的哪些情况。

    谢谢! 乔

3 个答案:

答案 0 :(得分:2)

1 - 2:有可能。

有两个线程,一个将生成子进程B,另一个子进程C.由于这两个线程都属于同一个共享地址空间,因此线程本身共享IO资源和内存。

子进程通常可以与父进程共享文件句柄和可能的其他资源,但这取决于操作系统,而不是您的应用程序应该关注的内容。

答案 1 :(得分:1)

我对你的两个问题的原始答案是,但在John的评论之后,我添加了一个点 - 凭借父母和孩子之间共享文件描述符的方式进程,两个兄弟进程可能最终在它们之间共享文件描述符。

现在有人可以用简单的语言向我解释文件描述符吗?是的,答案是here.

父进程A可以与其子进程B和C共享文件描述符,因此B& C将共享文件描述符(虽然由操作系统决定)。

除此之外,线程C也不会与进程B共享任何资源,因为该线程属于进程A,进程C也不会与从同一父进程创建的另一个进程B共享任何资源。

如果进程B和C共享任何内容,那么它将仅与其父进程共享。对于某些B和C不会分享任何内容,无论是从同一父母创建的,也不管C是进程还是线程。引用维基百科文章here

  

通常,子进程只执行一小组操作   在它停止执行其程序以支持该程序之前   开始,它需要很少,如果有的话,它的父母的数据   结构。

有多种方法可以实现进程间通信(又称IPC),可以看到它们here

答案 2 :(得分:0)

相同进程的线程共享: 流程说明, 描述符, 信号和信号处理程序 当前工作目录, 用户和组。