fork中的fork()调用

时间:2011-09-27 07:51:27

标签: c fork

我使用fork()创建了在2个不同地址空间上运行的2个不同进程。 现在,在父进程中,我需要来自子地址空间的变量值,或者子进程是否可以修改父地址空间中的变量。 这可能吗?

4 个答案:

答案 0 :(得分:5)

不,一旦你分叉,每个进程都会获得自己的地址空间,你将不得不考虑:

  • 进程之间的某种形式的IPC访问彼此的数据(例如共享内存或消息队列)。
  • 一些更轻量级的fork变体,允许共享数据(包括可能的线程)。

答案 1 :(得分:2)

一旦有两个进程,共享数据就需要进程间通信:文件,管道或共享内存。

答案 2 :(得分:2)

如果您的意思是在这两个流程之间交换数据,则不能。您可以通过SharedMemory,Message Passing,Pipeline,Socket等系统API来实现它。

答案 3 :(得分:0)

由于您使用fork命令创建了两个进程,因此两个进程将位于不同的地址空间中,因此它们只能通过IPC,消息传递,管道,共享内存等进行通信。否则,一个进程无法访问其他进程数据拥有流程特定数据 类似的线程也有线程特定的数据