子进程如何使用fork()从父进程继承数据?

时间:2017-10-08 09:19:53

标签: c++ arrays fork parent-child

我正在使用fork()创建子进程。由于子进程从父进程继承数据,我在父进程中创建一个数组并在我的子进程中调用calc函数,该函数计算数组中具有奇数索引的所有元素的总和。它给了我一个错误......

bind

如果子进程继承数据,在这种情况下,父类中的数组'arr',为什么它会给我这个错误?我的代码如下。

this.setState({
  loading: true
},this.props.tooltipRefresher.bind(this.props));

1 个答案:

答案 0 :(得分:2)

就编译器而言,fork只是一个正常的函数。

    int sum = calc(arr);

在代码的这一点上,范围内没有arr变量,因此您会收到错误。

另一方面,fork创建正在运行的进程的副本。在fork处,父进程中没有arr数组,因此子进程也不会拥有它。 arr仅在fork

之后创建
    // the parent process will create an array with at least 10 element
    int arr[] = { 1, 2, 5, 5, 6, 4, 8, 9, 23, 45 };

如果您希望变量在两个流程中都存在,则需要在调用fork之前创建该变量。