clasificando en fork()

Requisito previo: introducción de fork() , algoritmos de clasificación
Declaración del problema: escribir un programa para clasificar los números en el proceso principal e imprimir los números sin clasificar en el proceso secundario. Por ejemplo :

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

Explicación: aquí, usamos la función fork() para crear dos procesos, un proceso secundario y uno principal.

  • fork() devuelve un valor mayor que 0 para el proceso principal para que podamos realizar la operación de clasificación.
  • para child process fork() devuelve 0 para que podamos realizar la operación de impresión.
  • Aquí estamos usando un algoritmo de clasificación simple para clasificar los números en el orden deseado.
  • Estamos utilizando los valores devueltos por fork() para saber qué proceso es un proceso secundario o uno principal.

Nota: en algún momento, no es necesario que el proceso secundario se ejecute primero o que el proceso principal reciba primero la CPU asignada, a cualquier proceso se le puede asignar la CPU, en algún momento cuántico. Además, la identificación del proceso puede diferir durante diferentes ejecuciones.

Código –

// 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 \n";
  
        sort(a, a+n);
    
        // Displaying Array
        cout << " sorted numbers are ";
        for (int i = 0; i < n; i++) 
            cout << "\t" << a[i];
  
        cout << "\n";
  
    }
  
    // If n is 0 i.e. we are in child process
    else {
        cout << "Child process \n";
        cout << "\n  numbers to be sorted are ";
        for (int i = 0; i < n; i++) 
            cout << "\t" << a[i];       
    }
  
    return 0;
}

Producción –

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

Este artículo es una contribución de Pushpanjali Chauhan . 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

Deja una respuesta

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