multithreading - 子进程与父进程共享资源吗?

标签 multithreading subprocess

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

"Creating an application process (A) which execute and creating 1st thread to execute an application (application process (B)). A 2nd thread may be created within the application process (A) to execute the agent program(thread or process C). Therefore, the application process (B) and the agent (thread or process C) may share operating system allocated resources."

我的问题是:

  1. 执行进程A创建的进程B和线程 C,共享 有资源吗?
  2. 执行由进程A创建的进程B和进程C,共享 有资源吗?

我认为进程的资源是隔离的,即使它们是由其他进程(父进程)创建/执行的。 如果我错了,我会很高兴从我上面列出的用例中了解他们共享哪些资源、在哪些情况下以及在哪个操作系统(Windows/iOS/Linux)中。

谢谢! 乔

最佳答案

我对你的两个问题的最初回答是,但是在约翰的评论之后,我添加了一点 - 根据文件描述符在父进程和子进程之间共享的方式,两个兄弟进程可能会最终在它们之间共享文件描述符。

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

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

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

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

typically, the child process performs only a small set of actions before it ceases execution of its program in favour of the program to be started, and it requires very few, if any, of its parent's data structures.

有多种方法可以实现进程间通信(又名IPC),可以参见here .

关于multithreading - 子进程与父进程共享资源吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32169316/

相关文章:

java - 如何更改线程的 Java 标签?

python - ffmpeg 不会停止编码,即使使用 -shortest 命令

python - subprocess.call 环境变量

c# - 将 .exe 打包成 .vsix 并从 Visual Studio 扩展中调用

python - 套接字和线程python

java - 在单独的线程中运行逻辑仍然锁定 UI - Java

java - 使用相关任务更新 GUI

python - 如何让 Python 的 multiprocessing Queue 的 .empty() 方法返回正确的值?还是替代品?

python - Imagemagick 使用 subprocess.Popen 转换 python 脚本中的错误

linux - 使用子进程在 Python 中运行 linux 命令时出错