Escriba un programa para crear 4 procesos: el proceso principal y su proceso secundario que realizan varias tareas:
- El proceso padre cuenta la frecuencia de un número
- 1er hijo ordena la array
- El segundo niño encuentra el total de números pares en una array dada
- 3er niño calcula la suma de números pares en una array
Ejemplo –
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
Explicación: aquí, habíamos utilizado la función fork() para crear 4 procesos, tres procesos secundarios y uno principal. Entonces, aquí usamos dos funciones fork() que crean 4 procesos n1=fork() y n2 = fork()
- si n1 y n2 son mayores que cero, entonces es el proceso principal el que cuenta la frecuencia de un número.
- si n1 es igual a cero y n2 es mayor que cero, entonces es el primer proceso secundario el que ordena la array dada.
- si n1 es mayor que cero y n2 es igual a cero, entonces es el segundo proceso secundario que encuentra el total de números pares en la array.
- si n1 y n2 son iguales a cero, entonces el tercer hijo calcula la suma de todos los elementos en una array.
Código –
// C++ code to demonstrate the calculation // in parent and its 3 child processes using fork() #include <iostream> #include <unistd.h> using namespace std; int main() { int a[10] = { 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; }
Producción –
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
Este artículo es una contribución de Shivani Baghel . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA