如何在execvp之后最好地在父进程和子进程之间共享数组?

问题描述

假定您在进程X和Y之间在内存中共享一个数组A,其中X集中在数组的前半部分,Y集中在后半部分。 X是否可以在Y对其一半进行排序的同时,将数组的一半“在原地”排序在A上?它是相同的共享内存段,但是该段内的地址不同。这会导致不确定的行为吗?

换句话说,我的教授说不要让进程同时更改共享内存,但这仅是因为它们正在彼此相同的位置更改数据吗?

如果有关系,我们将在课堂上使用C89。

编辑: 由于我要询问的内容可能是不必要的解决方案(由于XY问题)。

我们正在使用多个进程,共享内存和execvp编写MergeSort程序。当前,我们有两个文件main.c和merge.c,其中main读入一个输入文件,该文件包含要排序的int数组的大小和内容。我们指示将数组存储在共享内存段中,并使用execvp()调用merge.c。然后,merge.c还应该使用execvp()调用自身以递归方式拆分数组,一旦数组的长度为两个元素,就对其进行排序,然后“返回”其父级并在合并过程中进行合并。

这是我的问题所在: 我不确定如何在不使用新的共享内存段的情况下将排序后的两个元素(和四个元素等)数组“返回”其父对象。也许有一种更简单的方法可以做到这一点。

如果我最初的问题是XY问题,我表示歉意。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)