fork()中的排序

先决条件—— 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
喜欢就支持一下吧
点赞6 分享