C语言中的fork()调用

3

我已经使用fork()函数创建了两个不同进程,它们分别运行在两个不同的地址空间中。 现在,在父进程中,我需要从子进程的地址空间中获取一个变量的值,或者让子进程修改父进程地址空间中的变量。 这是否可行?


所以也许你需要使用线程而不是独立的进程? - omnomnom
1
@PiotrekDe:在2个不同的地址空间上操作 - sehe
4个回答

5
不,一旦你使用了 fork,每个进程都有自己的地址空间,你需要研究以下两种方法来访问对方的数据:
1. 进程间通信方式(如共享内存或消息队列)。
2. 一些更轻量级的 fork 变体,允许共享数据(包括可能的线程)。

2

当你有两个进程时,共享数据需要进行进程间通信(IPC):文件、管道或共享内存。


2
如果你是指在这两个进程之间交换数据,那是不可能的。但你可以通过系统API(如SharedMemory、Message Passing、Pipeline、Socket等)来实现。

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接