我使用fork()创建了在2个不同地址空间上运行的2个不同进程 . 现在,在父进程中,我需要来自子地址空间的变量值,或者子进程是否可以修改父地址空间中的变量 . 这可能吗?
不,一旦你分叉,每个进程都有自己的地址空间,你将不得不考虑:
某些形式的IPC之间的进程访问彼此的数据(如共享内存或消息队列) .
一些更轻量级的fork变种,允许共享数据(包括可能的线程) .
一旦有两个进程,共享数据就需要进程间通信:文件,管道或共享内存 .
如果您的意思是在这两个流程之间交换数据,则不能 . 您可以通过系统API(如SharedMemory,Message Passing,Pipeline,Socket,...)来实现 .
由于您使用fork命令创建了两个进程,因此两个进程将位于不同的地址空间中,因此它们只能通过IPC,消息传递,管道,共享内存等进行通信 . 否则,一个进程无法访问其他进程数据,因为它们具有特定于进程的进程数据和类似的线程也有特定于线程的数据
4 回答
不,一旦你分叉,每个进程都有自己的地址空间,你将不得不考虑:
某些形式的IPC之间的进程访问彼此的数据(如共享内存或消息队列) .
一些更轻量级的fork变种,允许共享数据(包括可能的线程) .
一旦有两个进程,共享数据就需要进程间通信:文件,管道或共享内存 .
如果您的意思是在这两个流程之间交换数据,则不能 . 您可以通过系统API(如SharedMemory,Message Passing,Pipeline,Socket,...)来实现 .
由于您使用fork命令创建了两个进程,因此两个进程将位于不同的地址空间中,因此它们只能通过IPC,消息传递,管道,共享内存等进行通信 . 否则,一个进程无法访问其他进程数据,因为它们具有特定于进程的进程数据和类似的线程也有特定于线程的数据