【发布时间】:2011-09-27 07:51:26
【问题描述】:
我使用 fork() 创建了在 2 个不同地址空间上运行的 2 个不同进程。 现在,在父进程中,我需要子进程地址空间中的变量值,或者子进程是否可以修改父进程地址空间中的变量。 这可能吗?
【问题讨论】:
-
所以也许您需要线程而不是单独的进程?
-
@PiotrekDe:
operating on 2 different address spaces
我使用 fork() 创建了在 2 个不同地址空间上运行的 2 个不同进程。 现在,在父进程中,我需要子进程地址空间中的变量值,或者子进程是否可以修改父进程地址空间中的变量。 这可能吗?
【问题讨论】:
operating on 2 different address spaces
不,一旦你分叉了,每个进程都会获得它自己的地址空间,你必须查看其中一个:
【讨论】:
一旦你有两个进程,共享数据需要进程间通信:文件、管道或共享内存。
【讨论】:
如果您的意思是在这两个进程之间交换数据,则不能。您可以通过 SharedMemory、Message Passing、Pipeline、Socket 等系统 API 来实现...
【讨论】:
由于您使用 fork 命令创建了两个进程,因此两个进程都将位于不同的地址空间中,因此它们只能通过 IPC、消息传递、管道、共享内存等进行通信。否则一个进程无法访问其他进程数据。拥有流程特定的数据 同样,线程也有线程特定的数据
【讨论】: