Cálculo en proceso padre e hijo usando fork()

Escriba un programa para encontrar la suma de los números pares en el proceso padre y la suma de los números impares en el proceso hijo.

Ejemplos: 

Input : 1, 2, 3, 4, 5 

Output :
Parent process 
Sum of even no. is 6
Child process 
Sum of odd no. is 9 

Explicación: Aquí, habíamos usado la función fork() para crear dos procesos, un proceso secundario y uno principal. 

  • Para el proceso secundario, fork() devuelve 0 para que podamos calcular la suma de todos los números impares en el proceso secundario. 
  • fork() devuelve un valor mayor que 0 para el proceso principal para que podamos calcular la suma 
  • para todos los números pares simplemente comprobando el valor devuelto por fork(). 

C++

// C++ program to demonstrate calculation in parent and
// child processes using fork()
#include <iostream>
#include <unistd.h>
using namespace std;
 
// Driver code
int main()
{
    int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int sumOdd = 0, sumEven = 0, n, i;
    n = fork();
 
    // Checking if n is not 0
    if (n > 0) {
        for (i = 0; i < 10; i++) {
            if (a[i] % 2 == 0)
                sumEven = sumEven + a[i];
        }
        cout << "Parent process \n";
        cout << "Sum of even no. is " << sumEven << endl;
    }
 
    // If n is 0 i.e. we are in child process
    else {
        for (i = 0; i < 10; i++) {
            if (a[i] % 2 != 0)
                sumOdd = sumOdd + a[i];
        }
        cout << "Child process \n";
        cout << "\nSum of odd no. is " << sumOdd << endl;
    }
    return 0;
}

Producción: 

Parent process 
Sum of even no. is 30
Child process 
Sum of odd no. is 25

Este artículo es una contribución de Pushpanjali Chauhan . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *