先决条件—— fork()简介 , 排序算法 问题陈述- 编写一个程序对父进程中的数字进行排序,并在子进程中打印未排序的数字。例如:
null
Input : 5, 2, 3, 1, 4 Output : Parent process sorted numbers are 1, 2, 3, 4, 5 Child process numbers to sort are 5, 2, 3, 1, 4
解释—— 在这里,我们使用了 fork() 函数创建两个进程一个子进程和一父进程。
- fork()为父进程返回大于0的值,以便执行排序操作。
- for child process fork()返回0,以便执行打印操作。
- 这里我们使用一个简单的 分类 按所需顺序对数字排序的算法。
- 我们使用fork()的返回值来知道哪个进程是子进程,哪个是父进程。
注—— 在某些情况下,子进程不必首先执行,或者父进程将首先被分配CPU,任何进程都可能在某个时间段被分配CPU。此外,在不同的执行过程中,进程id可能会有所不同。
代码–
// C++ program to demonstrate sorting in parent and // printing result in child processes using fork() #include <iostream> #include <unistd.h> #include <algorithm> using namespace std; // Driver code int main() { int a[] = { 1, 6, 3, 4, 9, 2, 7, 5, 8, 10 }; int n = sizeof (a)/ sizeof (a[0]); int id = fork(); // Checking value of process id returned by fork if (id > 0) { cout << "Parent process " ; sort(a, a+n); // Displaying Array cout << " sorted numbers are " ; for ( int i = 0; i < n; i++) cout << " " << a[i]; cout << "" ; } // If n is 0 i.e. we are in child process else { cout << "Child process " ; cout << " numbers to be sorted are " ; for ( int i = 0; i < n; i++) cout << " " << a[i]; } return 0; } |
输出——
Output : Parent process sorted numbers are 1 2 3 4 5 6 7 8 9 10 Child process numbers to be sorted are 1 6 3 4 9 2 7 5 8 10
本文由 Pushpanjali Chauhan .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END