我应该对 fork 感到满意,我看到一个练习说使用 fork 调用来搜索索引从 0 到 15 的数组。我们假设每个进程只能做两件事......( 1) 是检查数组的长度是否为 1,以及 (2) 将数组的单个元素与正在搜索的数字进行比较。基本上我给它传递了一个数字,它应该做有限数量的分叉并返回该数字的索引。这是我的代码..
#define MAXINDEX 16
int forkSearch(int a[], int search, int start, int end){
if(start == end){
if(*(a + end) == search){
return end;
}
}
else{
pid_t child = fork();
if(child == 0) return forkSearch(a, search, start, end/2);
else return forkSearch(a, search, (start + end)/2, end);
}
}
int main(int argc, char* argv[]){
int searchArray[MAXINDEX] = {1, 12, 11, 5, 10, 6, 4, 9, 13, 2, 8, 14, 3,\
15, 7};
printf("Should be 1. Index of 12 = %d\n", forkSearch(searchArray,
12, 0, MAXINDEX));
return 0;
}
这个快速爆炸的程序返回的所有内容似乎都是 1、10、11 或 13。为什么这不能正常工作。