无法在递归中使用 fork()?
unable to use fork() in recursion?
我在 C 在 linux 中使用 fork() 系统调用使用二进制插入搜索(即按排序顺序)合并到数组的编程任务基于 OS.
我 WITHOUT 使用 fork() 完成了它并且工作正常。现在我想在其中使用 fork() 系统调用。我已经阅读了有关 fork() 系统调用的信息,但是我无法在我的程序中使用它。请帮帮我!
您可以使用 fork() 让 child 进程执行每个二进制搜索并让 child return 插入点通过管道指向 parent (或者 child 的退出状态,如果数组总是 255 个元素或更小的话)。
这是我能看到的唯一有意义的东西,在现实世界中你永远不会这样做——只是作为一个练习来感受 fork()。
基本上,您会在 binSearch() 之前调用 fork()。 child 将通过管道(或其退出代码)执行 binSearch() 和 return 插入点。同时,parent会等待插入点结果,然后执行插入。
一种 可能 更有意义的使用 fork() 的方法是将要排序的数组分成两半,每一半按递归排序不同的 child 进程通过仅到达其 parent 的管道将其排序的一半传回。 parent 使用合并排序将两个已排序的一半合并在一起,并将结果传递给它的 parent。最终 parent 输出排序后的数组。这将利用并行性,但要换取大量 inter-process 通信。
我在 C 在 linux 中使用 fork() 系统调用使用二进制插入搜索(即按排序顺序)合并到数组的编程任务基于 OS.
我 WITHOUT 使用 fork() 完成了它并且工作正常。现在我想在其中使用 fork() 系统调用。我已经阅读了有关 fork() 系统调用的信息,但是我无法在我的程序中使用它。请帮帮我!
您可以使用 fork() 让 child 进程执行每个二进制搜索并让 child return 插入点通过管道指向 parent (或者 child 的退出状态,如果数组总是 255 个元素或更小的话)。
这是我能看到的唯一有意义的东西,在现实世界中你永远不会这样做——只是作为一个练习来感受 fork()。
基本上,您会在 binSearch() 之前调用 fork()。 child 将通过管道(或其退出代码)执行 binSearch() 和 return 插入点。同时,parent会等待插入点结果,然后执行插入。
一种 可能 更有意义的使用 fork() 的方法是将要排序的数组分成两半,每一半按递归排序不同的 child 进程通过仅到达其 parent 的管道将其排序的一半传回。 parent 使用合并排序将两个已排序的一半合并在一起,并将结果传递给它的 parent。最终 parent 输出排序后的数组。这将利用并行性,但要换取大量 inter-process 通信。