# Multiple calculations in 4 processes using fork()

• Last Updated : 10 Nov, 2017

Write a program to create 4 processes: parent process and its child process which perform various tasks :

• Parent process count the frequency of a number
• 1st child sort the array
• 2nd child find total even number(s) in a given array
• 3rd child calculate the sum of even numbers in an array

Example –

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

```Input :
2, 4, 6, 7, 9, 0, 1, 5, 8, 3

Output :
Parent process :
the key to be searched is 7
the frequency of 7 is 1
1st child process :
the sorted array is
0 1 2 3 4 5 6 7 8 9
2nd child process :
Total even no are: 5
3rd child process :
the sum is :45
```

Explanation – Here, we had used fork() function to create 4 processes three child and one parent process. So, here we use two fork() function which create 4 process n1=fork() and n2 = fork()

• if n1 and n2 is greater than zero then it is parent process which counts the frequency of a number.
• if n1 is equal to zero and n2 is greater than zero then it is 1st child process which sorts the given array.
• if n1 is greater than zero and n2 is equal to zero than it is 2nd child process which finds the total even numbers in the array.
• if n1 and n2 both equal to zero then it is 3rd child calculates the sum of all elements in an array.

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Code –

 `// C++ code to demonstrate the calculation``// in parent and its 3 child processes using fork()``#include ``#include `` ` `using` `namespace` `std;`` ` `int` `main()``{`` ` `    ``int` `a = { 2, 4, 6, 7, 9, 0, 1, 5, 8, 3 };``    ``int` `n1, n2, i, j, key, c, temp;``    ``n1 = fork();``    ``n2 = fork();`` ` `    ``// if n1 is greater than zero``    ``// and n2 is greater than zero``    ``// then parent process executes``    ``if` `(n1 > 0 && n2 > 0) {`` ` `        ``int` `c = 0;``        ``cout << ``"Parent process :"` `<< endl;`` ` `        ``// key to be searched is 7``        ``key = 7;``        ``cout << ``"the key to be searched is "` `<< key << endl;`` ` `        ``for` `(i = 0; i < 10; i++) {`` ` `            ``if` `(a[i] == key)``                ``// frequency of key``                ``c++;``        ``}`` ` `        ``cout << ``"the frequency of "` `<< key << ``" is "` `<< c << endl;``    ``}`` ` `    ``// else if n1 is zero``    ``// and n2 is greater than zero``    ``// then 1st child process executes``    ``else` `if` `(n1 == 0 && n2 > 0) {`` ` `        ``cout << ``"1st child process :"` `<< endl;`` ` `        ``for` `(i = 0; i < 10; i++) {`` ` `            ``for` `(j = 0; j < 9; j++) {`` ` `                ``if` `(a[j] > a[j + 1]) {`` ` `                    ``temp = a[j];``                    ``a[j] = a[j + 1];``                    ``a[j + 1] = temp;``                ``}``            ``}``        ``}`` ` `        ``cout << ``"the sorted array is"` `<< endl;`` ` `        ``for` `(i = 0; i < 10; i++) {`` ` `            ``cout << a[i] << ``" "``;``        ``}`` ` `        ``cout << endl;``    ``}`` ` `    ``// else if n1 is greater than zero``    ``// and n2 is  zero``    ``// then 2nd child process executes``    ``else` `if` `(n1 > 0 && n2 == 0) {`` ` `        ``int` `f = 0;``        ``cout << ``"2nd child process :"` `<< endl;`` ` `        ``for` `(i = 0; i < 10; i++) {`` ` `            ``// counting total even numbers``            ``if` `(a[i] % 2 == 0) {`` ` `                ``f++;``            ``}``        ``}`` ` `        ``cout << ``" Total even no are: "` `<< f << ``" "``;``        ``cout << endl;``    ``}`` ` `    ``// else if n1 is zero``    ``// and n2 is zero``    ``// then 3rd child process executes``    ``else` `if` `(n1 == 0 && n2 == 0) {`` ` `        ``cout << ``"3rd child process :"` `<< endl;`` ` `        ``int` `sum = 0;``        ``// summing all given keys``        ``for` `(i = 0; i < 10; i++) {`` ` `            ``sum = sum + a[i];``        ``}`` ` `        ``cout << ``"the sum is :"` `<< sum << endl;``    ``}`` ` `    ``return` `0;``}`

Output –

```Parent process :
the key to be searched is 7
the frequency of 7 is 1
1st child process :
the sorted array is
0 1 2 3 4 5 6 7 8 9
2nd child process :
Total even no are: 5
3rd child process :
the sum is :45
```

This article is contributed by Shivani Baghel. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.